mirror of
https://github.com/dolphin-emu/dolphin.git
synced 2025-07-23 06:09:50 -06:00
Merge pull request #7350 from zackhow/android-analytics
Android: Add usage statistics to android
This commit is contained in:
@ -190,5 +190,4 @@ void HttpAnalyticsBackend::Send(std::string report)
|
||||
if (m_http.IsValid())
|
||||
m_http.Post(m_endpoint, report);
|
||||
}
|
||||
|
||||
} // namespace Common
|
||||
|
@ -183,5 +183,4 @@ protected:
|
||||
std::string m_endpoint;
|
||||
HttpRequest m_http{std::chrono::seconds{5}};
|
||||
};
|
||||
|
||||
} // namespace Common
|
||||
|
27
Source/Core/Common/AndroidAnalytics.cpp
Normal file
27
Source/Core/Common/AndroidAnalytics.cpp
Normal file
@ -0,0 +1,27 @@
|
||||
// Copyright 2018 Dolphin Emulator Project
|
||||
// Licensed under GPLv2+
|
||||
// Refer to the license.txt file included.
|
||||
|
||||
#include <functional>
|
||||
#include <string>
|
||||
|
||||
#include "Common/AndroidAnalytics.h"
|
||||
|
||||
namespace Common
|
||||
{
|
||||
std::function<void(std::string, std::string)> s_android_send_report;
|
||||
void AndroidSetReportHandler(std::function<void(std::string, std::string)> func)
|
||||
{
|
||||
s_android_send_report = std::move(func);
|
||||
}
|
||||
AndroidAnalyticsBackend::AndroidAnalyticsBackend(std::string passed_endpoint)
|
||||
: m_endpoint{std::move(passed_endpoint)}
|
||||
{
|
||||
}
|
||||
AndroidAnalyticsBackend::~AndroidAnalyticsBackend() = default;
|
||||
|
||||
void AndroidAnalyticsBackend::Send(std::string report)
|
||||
{
|
||||
s_android_send_report(m_endpoint, report);
|
||||
}
|
||||
} // namespace Common
|
26
Source/Core/Common/AndroidAnalytics.h
Normal file
26
Source/Core/Common/AndroidAnalytics.h
Normal file
@ -0,0 +1,26 @@
|
||||
// Copyright 2018 Dolphin Emulator Project
|
||||
// Licensed under GPLv2+
|
||||
// Refer to the license.txt file included.
|
||||
#pragma once
|
||||
|
||||
#include <functional>
|
||||
#include <string>
|
||||
|
||||
#include "Common/Analytics.h"
|
||||
|
||||
namespace Common
|
||||
{
|
||||
void AndroidSetReportHandler(std::function<void(std::string, std::string)> function);
|
||||
|
||||
class AndroidAnalyticsBackend : public AnalyticsReportingBackend
|
||||
{
|
||||
public:
|
||||
explicit AndroidAnalyticsBackend(const std::string endpoint);
|
||||
|
||||
~AndroidAnalyticsBackend() override;
|
||||
void Send(std::string report) override;
|
||||
|
||||
private:
|
||||
std::string m_endpoint;
|
||||
};
|
||||
} // namespace Common
|
@ -71,6 +71,7 @@ endif()
|
||||
|
||||
if(ANDROID)
|
||||
target_sources(common PRIVATE
|
||||
AndroidAnalytics.cpp
|
||||
Logging/ConsoleListenerDroid.cpp
|
||||
)
|
||||
elseif(WIN32)
|
||||
|
@ -10,6 +10,9 @@
|
||||
#include <windows.h>
|
||||
#elif defined(__APPLE__)
|
||||
#include <CoreServices/CoreServices.h>
|
||||
#elif defined(ANDROID)
|
||||
#include <functional>
|
||||
#include "Common/AndroidAnalytics.h"
|
||||
#endif
|
||||
|
||||
#include "Common/Analytics.h"
|
||||
@ -35,6 +38,14 @@ constexpr const char* ANALYTICS_ENDPOINT = "https://analytics.dolphin-emu.org/re
|
||||
std::mutex DolphinAnalytics::s_instance_mutex;
|
||||
std::shared_ptr<DolphinAnalytics> DolphinAnalytics::s_instance;
|
||||
|
||||
#if defined(ANDROID)
|
||||
static std::function<std::string(std::string)> s_get_val_func;
|
||||
void DolphinAnalytics::AndroidSetGetValFunc(std::function<std::string(std::string)> func)
|
||||
{
|
||||
s_get_val_func = std::move(func);
|
||||
}
|
||||
#endif
|
||||
|
||||
DolphinAnalytics::DolphinAnalytics()
|
||||
{
|
||||
ReloadConfig();
|
||||
@ -59,7 +70,11 @@ void DolphinAnalytics::ReloadConfig()
|
||||
std::unique_ptr<Common::AnalyticsReportingBackend> new_backend;
|
||||
if (SConfig::GetInstance().m_analytics_enabled)
|
||||
{
|
||||
#if defined(ANDROID)
|
||||
new_backend = std::make_unique<Common::AndroidAnalyticsBackend>(ANALYTICS_ENDPOINT);
|
||||
#else
|
||||
new_backend = std::make_unique<Common::HttpAnalyticsBackend>(ANALYTICS_ENDPOINT);
|
||||
#endif
|
||||
}
|
||||
m_reporter.SetBackend(std::move(new_backend));
|
||||
|
||||
@ -152,6 +167,9 @@ void DolphinAnalytics::MakeBaseBuilder()
|
||||
}
|
||||
#elif defined(ANDROID)
|
||||
builder.AddData("os-type", "android");
|
||||
builder.AddData("android-manufacturer", s_get_val_func("DEVICE_MANUFACTURER"));
|
||||
builder.AddData("android-model", s_get_val_func("DEVICE_MODEL"));
|
||||
builder.AddData("android-version", s_get_val_func("DEVICE_OS"));
|
||||
#elif defined(__APPLE__)
|
||||
builder.AddData("os-type", "osx");
|
||||
|
||||
|
@ -10,6 +10,9 @@
|
||||
|
||||
#include "Common/Analytics.h"
|
||||
|
||||
#if defined(ANDROID)
|
||||
#include <functional>
|
||||
#endif
|
||||
// Non generic part of the Dolphin Analytics framework. See Common/Analytics.h
|
||||
// for the main documentation.
|
||||
|
||||
@ -19,10 +22,13 @@ public:
|
||||
// Performs lazy-initialization of a singleton and returns the instance.
|
||||
static std::shared_ptr<DolphinAnalytics> Instance();
|
||||
|
||||
#if defined(ANDROID)
|
||||
// Get value from java.
|
||||
static void AndroidSetGetValFunc(std::function<std::string(std::string)> function);
|
||||
#endif
|
||||
// Resets and recreates the analytics system in order to reload
|
||||
// configuration.
|
||||
void ReloadConfig();
|
||||
|
||||
// Rotates the unique identifier used for this instance of Dolphin and saves
|
||||
// it into the configuration.
|
||||
void GenerateNewIdentity();
|
||||
|
Reference in New Issue
Block a user