247 lines
8.9 KiB
Java
247 lines
8.9 KiB
Java
package com.gh.common.util;
|
||
|
||
import android.app.Activity;
|
||
import android.app.Application;
|
||
import android.content.Context;
|
||
import android.preference.PreferenceManager;
|
||
import android.text.TextUtils;
|
||
|
||
import com.gh.common.constant.Constants;
|
||
import com.gh.common.exposure.meta.MetaUtil;
|
||
import com.gh.gid.GidCallback;
|
||
import com.gh.gid.GidHelper;
|
||
import com.halo.assistant.HaloApp;
|
||
import com.lightgame.config.CommonDebug;
|
||
import com.lightgame.utils.Utils;
|
||
|
||
import java.util.HashMap;
|
||
import java.util.Map;
|
||
import java.util.Properties;
|
||
|
||
/**
|
||
* Created by LGT on 2016/6/15.
|
||
* 数据收集 工具类 (TalkingData、MTA)
|
||
*/
|
||
public class DataUtils {
|
||
|
||
/**
|
||
* 初始化各种统计工具,仅在release build(非debug)模式启用统计
|
||
*
|
||
* @param context
|
||
* @param channel
|
||
*/
|
||
public static void init(final Application context, String channel) {
|
||
|
||
if (CommonDebug.IS_DEBUG) {
|
||
return;
|
||
}
|
||
//TalkingData
|
||
// try {
|
||
// TCAgent.LOG_ON = false;
|
||
// TCAgent.init(context, Config.TALKINGDATA_APPID, channel);
|
||
// /**
|
||
// *
|
||
// * 不要启用!!!!不要启用,全部由{@link com.gh.base.AppUncaughtHandler}处理
|
||
// */
|
||
// TCAgent.setReportUncaughtExceptions(false);
|
||
// } catch (Exception e) {
|
||
// e.printStackTrace();
|
||
// }
|
||
|
||
//MTA
|
||
// try {
|
||
// /**
|
||
// *
|
||
// * 不要启用!!!!全部由{@link com.gh.base.AppUncaughtHandler}处理
|
||
// */
|
||
// StatConfig.setAutoExceptionCaught(false);
|
||
//
|
||
// StatCrashReporter crashReporter = StatCrashReporter.getStatCrashReporter(context);
|
||
// crashReporter.setJavaCrashHandlerStatus(false);
|
||
//// crashReporter.setEnableInstantReporting(true);
|
||
//
|
||
// StatConfig.setDebugEnable(false);
|
||
//
|
||
// // 设置数据上报策略
|
||
// // 测试渠道的时候即时上传,方便查看日志
|
||
// if (Config.DEFAULT_CHANNEL.equals(HaloApp.getInstance().getChannel())) {
|
||
// StatConfig.setStatSendStrategy(StatReportStrategy.INSTANT);
|
||
// } else {
|
||
// StatConfig.setStatSendStrategy(StatReportStrategy.PERIOD);
|
||
// StatConfig.setSendPeriodMinutes(5);
|
||
// }
|
||
//
|
||
// // 设置启用Tlink
|
||
// StatConfig.setTLinkStatus(true);
|
||
//
|
||
// StatConfig.init(context);
|
||
// StatConfig.setInstallChannel(channel);
|
||
// StatConfig.setAntoActivityLifecycleStat(true);
|
||
// StatConfig.setAppVersion(PackageUtils.getVersionName());
|
||
//
|
||
// // 开启收集服务
|
||
// StatService.startStatService(context, Config.MTA_APPKEY, com.tencent.stat.common.StatConstants.VERSION);
|
||
// StatService.registerActivityLifecycleCallbacks(context);
|
||
// } catch (MtaSDkException e) {
|
||
// e.printStackTrace();
|
||
// }
|
||
|
||
// init bugly
|
||
// try {
|
||
// CrashReport.setIsDevelopmentDevice(context, Config.DEFAULT_CHANNEL.equals(channel));
|
||
//
|
||
// CrashReport.UserStrategy strategy = new CrashReport.UserStrategy(context);
|
||
// strategy.setEnableANRCrashMonitor(false);
|
||
// strategy.setEnableNativeCrashMonitor(false);
|
||
// strategy.setAppChannel(channel);
|
||
// strategy.setAppVersion(PackageUtils.getVersionName());
|
||
//
|
||
// CrashReport.initCrashReport(context, Config.BUGLY_APPID, false, strategy);
|
||
//
|
||
// } catch (Exception e) {
|
||
// e.printStackTrace();
|
||
// }
|
||
|
||
}
|
||
|
||
// MTA ->【次数统计】Key-Value参数的事件
|
||
public static void onMtaEvent(Context context, String eventId, String... kv) {
|
||
// if (CommonDebug.IS_DEBUG && (kv == null || kv.length % 2 != 0)) {
|
||
// throw new IllegalStateException("onEvent kv 必须不为空且数量为偶数");
|
||
// }
|
||
MtaHelper.onEvent(eventId, kv);
|
||
}
|
||
|
||
public static void getGid() {
|
||
GidHelper.getInstance().registerDevice(HaloApp.getInstance().getApplication(), new GidCallback() {
|
||
@Override
|
||
public void onSuccess(String gid) {
|
||
Utils.log("Gid", gid);
|
||
PreferenceManager.getDefaultSharedPreferences(HaloApp.getInstance().getApplication()).edit().putString(Constants.DEVICE_KEY, gid).apply();
|
||
|
||
String originalGid = HaloApp.getInstance().getGid();
|
||
HaloApp.getInstance().setGid(gid);
|
||
|
||
// 避免重复调用
|
||
if (!TextUtils.isEmpty(gid) && !gid.equals(originalGid)) {
|
||
GameSubstituteRepositoryHelper.updateSubstitutableGames();
|
||
}
|
||
|
||
// 避免初始化顺序问题导致 MetaUtil 一直持有空的 gid
|
||
MetaUtil.INSTANCE.refreshMeta();
|
||
}
|
||
|
||
@Override
|
||
public void onFailure(String s) {
|
||
MtaHelper.onEventWithBasicDeviceInfo("开发辅助", "GID 获取异常", s);
|
||
}
|
||
});
|
||
}
|
||
|
||
public static void onEvent(Context var0, String var1, String var2) {
|
||
Properties prop = new Properties();
|
||
prop.setProperty(var1, var2);
|
||
// StatService.trackCustomKVEvent(var0, var1, prop);
|
||
}
|
||
|
||
public static void onPause(Activity var0) {
|
||
// StatService.onPause(var0);
|
||
}
|
||
|
||
public static void onResume(Activity var0) {
|
||
// StatService.onResume(var0);
|
||
}
|
||
|
||
// 游戏启动
|
||
public static void onGameLaunchEvent(Context context, String gameName, String platform, String page) {
|
||
Map<String, Object> kv = new HashMap<>();
|
||
kv.put("版本", platform);
|
||
kv.put("页面", page);
|
||
onEvent(context, "游戏启动", gameName, kv);
|
||
}
|
||
|
||
public static void onEvent(Context var0, String var1, String var2, Map<String, Object> var3) {
|
||
Properties prop = new Properties();
|
||
prop.setProperty("label", var2);
|
||
for (String key : var3.keySet()) {
|
||
prop.setProperty(key, var3.get(key) + "");
|
||
}
|
||
// StatService.trackCustomKVEvent(var0, var1, prop);
|
||
}
|
||
|
||
public static void trackTimeEvent(Context context, String eventId, int costTime, String... kv) {
|
||
|
||
Properties prop = new Properties();
|
||
for (int i = 0; i < kv.length; i++) {
|
||
if (i % 2 != 0 || i != 0) {
|
||
String key = kv[i - 1];
|
||
String value = kv[i];
|
||
if (!TextUtils.isEmpty(key) && !TextUtils.isEmpty(value)) {
|
||
prop.setProperty(key, value);
|
||
}
|
||
}
|
||
}
|
||
|
||
if (prop.size() == 0) return;
|
||
|
||
// StatService.trackCustomKVTimeIntervalEvent(context, costTime, eventId, prop);
|
||
}
|
||
|
||
// 游戏下载
|
||
public static void onGameDownloadEvent(Context context, String gameName, String platform, String entrance, String status, String method) {
|
||
// Map<String, Object> kv = new HashMap<>();
|
||
//
|
||
// platform = PlatformUtils.getInstance(HaloApp.getInstance().getApplication()).getPlatformName(platform);
|
||
//
|
||
// kv.put("版本", platform);
|
||
// kv.put("用户机型", Build.MODEL);
|
||
// kv.put("设备IMEI", Util_System_Phone_State.getDeviceId(HaloApp.getInstance().getApplication()));
|
||
// kv.put("网络状态", DeviceUtils.getNetwork(HaloApp.getInstance().getApplication()));
|
||
// kv.put("光环助手版本", BuildConfig.VERSION_NAME);
|
||
// kv.put("位置", entrance);
|
||
// kv.put("类型", method);
|
||
// kv.put("厂商", Build.MANUFACTURER);
|
||
// kv.put("Android版本", Build.VERSION.RELEASE);
|
||
// onEvent(context, "游戏下载", gameName, kv);
|
||
//
|
||
// Map<String, Object> kv2 = new HashMap<>();
|
||
// kv2.put("状态", status);
|
||
// kv2.put("位置", entrance);
|
||
//
|
||
// if (status.equals("开始")) {
|
||
// kv2.put("版本", entrance + "-开始");
|
||
// kv2.put("游戏分平台", gameName + "-" + platform + "-开始");
|
||
// kv2.put("光环助手版本", BuildConfig.VERSION_NAME + "-开始");
|
||
// } else {
|
||
// kv2.put("版本", platform);
|
||
// kv2.put("游戏分平台", gameName + "-" + platform);
|
||
// kv2.put("光环助手版本", BuildConfig.VERSION_NAME);
|
||
// }
|
||
//
|
||
// onEvent(context, "游戏下载位置", gameName, kv2);
|
||
}
|
||
|
||
// 游戏更新
|
||
public static void onGameUpdateEvent(Context context, String gameName, String paltform, String status) {
|
||
Map<String, Object> kv = new HashMap<>();
|
||
kv.put("版本", paltform);
|
||
kv.put("状态", status);
|
||
onEvent(context, "游戏更新", gameName, kv);
|
||
}
|
||
|
||
public static void onError(Context context, Throwable throwable) {
|
||
//bugly 作为默认处理异常的类库,已经上报了,此处不重复上报
|
||
try {
|
||
// CrashReport.postCatchedException(throwable);
|
||
} catch (Exception e) {
|
||
}
|
||
|
||
//talkingdata
|
||
try {
|
||
// TCAgent.onError(context, throwable);
|
||
} catch (Exception e) {
|
||
}
|
||
}
|
||
|
||
}
|