baidu zhidmobadstatid 是啥属性

百度地图导航初始化失败问题总结
百度地图导航初始化失败问题总结
今天在集成百度地图导航sdk的时候,某些机型上无法初始化导航功能。后来经过一系列排查,有以下几点:
开发工具是android studio,android版本是23。
步骤1:下载jar包,在build.grale中添加以下两段代码
dependencies {
compile files('libs/BaiduLBS_Android.jar')
compile files('libs/httpmime-4.1.2.jar')
sourceSets {
jniLibs.srcDirs = ['libs']
复制在百度下载得demo中得 BNDemoMainActivity 和 BNDemoGuideActivity 两个类到项目中。
在manifest中添加以下代码:
android:name="android.permission.GET_ACCOUNTS"/&
android:name="android.permission.READ_PROFILE"/&
android:name="android.permission.READ_CONTACTS"/&
android:name="android.permission.MOUNT_UNMOUNT_FILESYSTEMS"/&
android:name="android.permission.BAIDU_LOCATION_SERVICE"/&
android:name="android.permission.ACCESS_NETWORK_STATE"/&
android:name="android.permission.ACCESS_COARSE_LOCATION"/&
android:name="android.permission.INTERNET"/&
android:name="android.permission.ACCES_MOCK_LOCATION"/&
android:name="android.permission.ACCESS_FINE_LOCATION"/&
android:name="com.android.launcher.permission.READ_SETTINGS"/&
android:name="android.permission.WAKE_LOCK"/&
android:name="android.permission.CHANGE_WIFI_STATE"/&
android:name="android.permission.ACCESS_WIFI_STATE"/&
android:name="android.permission.ACCESS_GPS"/&
android:name="android.permission.GET_TASKS"/&
android:name="android.permission.WRITE_EXTERNAL_STORAGE"/&
android:name="android.permission.BROADCAST_STICKY"/&
android:name="android.permission.WRITE_SETTINGS"/&
android:name="android.permission.PROCESS_OUTGOING_CALLS"/&
android:name="android.permission.READ_PHONE_STATE"/&
android:name="android.permission.MODIFY_AUDIO_SETTINGS"/&
android:name="android.permission.RECORD_AUDIO"/&
android:name="android.permission.CAMERA"/&
android:name="android.permission.ACCESS_COARSE_LOCATION"/&
android:name="android.permission.ACCESS_FINE_LOCATION"/&
android:name="android.permission.ACCESS_WIFI_STATE"/&
android:name="android.permission.ACCESS_NETWORK_STATE"/&
android:name="android.permission.CHANGE_WIFI_STATE"/&
android:name="android.permission.READ_PHONE_STATE"/&
android:name="android.permission.WRITE_EXTERNAL_STORAGE"/&
android:name="android.permission.INTERNET"/&
android:name="android.permission.MOUNT_UNMOUNT_FILESYSTEMS"/&
android:name="com.baidu.lbsapi.API_KEY"
android:value="QF4jEX9lcP4yUagOeDOa633f5vmfpXco"/&
android:name="BaiduMobAd_STAT_ID"
android:value="48ae76de3f"/&
android:name="com.baidu.location.f"
android:enabled="true"
android:process=":remote"&
问题总结:
1.导航系统初始化失败:这里有个问题,就是下载jar的时候,必须要在 。
有个小技巧,如果单独使用一个功能的话,就随便下载,但是比如你想使用定位加导航,比如在这个页面选中这两个一起下载下来,他们的jar是一个压缩包。千万别单独下载。单独下载的不能用。
没有更多推荐了,
加入CSDN,享受更精准的内容推荐,与500万程序员共同成长!于无声处听惊雷,三生三世忆三石
Android中统计分析的SDK ,友盟统计,百度统计,腾讯统计
APP统计分析
对程序员来说,用户画像就是用户的属性和行为;通俗地说,用户画像是包括了个人信息、兴趣爱好、日常行为等血肉丰满的客户实体。用户画像是精准营销的产物,企业通过收集用户的行为,然后分析出用户的特征与偏好,进而挖掘潜在的商业价值,实现企业效益的最大化。用户画像的一个具体应用是电商app的“猜你喜欢”栏目,电商平台通过对用户购买过的商品进行统计,可以分析用户日常生活用的是什么物品;电商平台还可以对用户的搜索行为、浏览行为进行统计,从中分析用户感兴趣的商品,或者说考虑购买的商品。电商平台得到包括日常生活、兴趣爱好、购买意向在内的用户画像后,自然就能有针对性的向用户推荐合适的商品,从而扩大销量、增加营业额。
下图是用户画像的一个具体例子
统计分析的内容
app进行统计分析,主要有两方面的内容:
一、用户行为统计,包括
1、用户打开和关闭页面,以及在页面的停留时长;
2、用户点击行为的分布与频率;
3、用户输入的文字和图片,如搜索时的关键词、二维码的扫描信息、分享的图文内容等等;
4、用户对多媒体信息的接受程序,如听音乐的时长、看视频的时长等等;
二、运行情况分析,包括
1、app的启动时间;
2、app崩溃的日志信息;
3、app杀死进程;友盟统计
1、在libs目录加入下面sdk包:
umeng-analytics-v6.0.1.jar
utdid4all-1.0.4.jar
2、在AndroidManifest.xml中补充权限定义,以及meta-data参数定义,包括UMENG_APPKEY、UMENG_CHANNEL等等,其中UMENG_APPKEY需要到友盟网站上注册申请;
3、代码里先设置采集参数,然后开始采集行为事件;MobclickAgent
友盟统计分析主要用到MobclickAgent类。下面是MobclickAgent类与设置有关的方法说明:
setDebugMode : 设置是否开启调试模式。true为开启调试,false为关闭调试。
setSessionContinueMillis : 设置session的持续时间,单位毫秒。
startWithConfigure : 设置友盟的统计分析配置。该方法的参数是UMAnalyticsConfig对象,包含了appkey、渠道号、是否启用崩溃采集等等信息。
openActivityDurationTrack : 设置是否开启默认的Activity页面统计方式。true为开启,false为关闭。
setAutoLocation : 设置是否自动定位。
注意,友盟sdk的发送策略不在代码中设置,要在友盟的后台管理页面中设置。具体步骤为:点击应用名称-&设置-&发送策略,目前有两种:启动时发送(默认)、按间隔发送。
友盟sdk的老版本还提供了实时发送与仅在wifi下发送两种策略,但在新版本中取消了,原因如下:
1、实时发送会存在大量冗余字段的重复发送的现象,造成终端用户不必要的流量消耗;
2、仅在wifi下发送,数据的延迟会非常严重,造成数据统计结果的失真;
下面是MobclickAgent类与事件有关的方法说明:
onPageStart : 页面启动事件。
onPageEnd : 页面结束事件。
onResume : 恢复统计。
onPause : 暂停统计。
onEvent : 普通事件,一般是点击事件。
onEventValue : 复杂事件,比如说音乐播放事件。
onSocialEvent : 社会化分享事件。
onProfileSignIn : 登录事件。
onProfileSignOff : 注销事件。
onKillProcess : 杀死进程事件。
下面是友盟统计分析的代码例子:
import java.util.ArrayL
import java.util.HashM
import java.util.L
import java.util.M
import android.app.A
import android.app.AlertD
import android.content.C
import android.content.DialogI
import android.content.I
import android.os.B
import android.view.KeyE
import android.view.V
import com.example.exmanalysis.umeng.analytics.FragmentS
import com.example.exmanalysis.umeng.analytics.FragmentT
import com.example.exmanalysis.umeng.analytics.WebviewA
import com.umeng.analytics.MobclickA
import com.umeng.analytics.MobclickAgent.EScenarioT
import com.umeng.analytics.social.UMPlatformD
import com.umeng.analytics.social.UMPlatformData.GENDER;
import com.umeng.analytics.social.UMPlatformData.UM
public class UmengActivity extends Activity {
private final static String TAG = "UmengActivity";
private Context mC
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_umeng);
mContext =
MobclickAgent.setDebugMode(true);
// SDK在统计Fragment时,需要关闭Activity自带的页面统计,
// 然后在每个页面中重新集成页面统计的代码(包括调用了 onResume 和 onPause 的Activity)。
MobclickAgent.openActivityDurationTrack(false);
// MobclickAgent.setAutoLocation(true);
// MobclickAgent.setSessionContinueMillis(1000);
// MobclickAgent.startWithConfigure(
// new UMAnalyticsConfig(mContext, "4f83c5d00011", "Umeng", EScenarioType.E_UM_NORMAL));
MobclickAgent.setScenarioType(mContext, EScenarioType.E_UM_NORMAL);
public void onResume() {
super.onResume();
MobclickAgent.onPageStart(TAG);
MobclickAgent.onResume(mContext);
public void onPause() {
super.onPause();
MobclickAgent.onPageEnd(TAG);
MobclickAgent.onPause(mContext);
public void onButtonClick(View view) {
int id = view.getId();
switch (id) {
case R.id.umeng_example_analytics_event_cc:
List&String& keyPath = new ArrayList&String&();
keyPath.add("one");
keyPath.add("two");
keyPath.add("tree");
MobclickAgent.onEvent(mContext, keyPath, 20, "label");
case R.id.umeng_example_analytics_event:
MobclickAgent.onEvent(mContext, "click");
MobclickAgent.onEvent(mContext, "click", "button");
case R.id.umeng_example_analytics_ekv:
Map&String, String& map_ekv = new HashMap&String, String&();
map_ekv.put("type", "popular");
map_ekv.put("artist", "JJLin");
MobclickAgent.onEvent(mContext, "music", map_ekv);
case R.id.umeng_example_analytics_duration:
Map&String, String& map_value = new HashMap&String, String&();
map_value.put("type", "popular");
map_value.put("artist", "JJLin");
MobclickAgent.onEventValue(this, "music", map_value, 12000);
case R.id.umeng_example_analytics_make_crash:
"123".substring(10);
case R.id.umeng_example_analytics_js_analytic:
startActivity(new Intent(this, WebviewAnalytic.class));
case R.id.umeng_example_analytics_fragment_stack:
startActivity(new Intent(this, FragmentStack.class));
case R.id.umeng_example_analytics_fragment_tabs:
startActivity(new Intent(this, FragmentTabs.class));
case R.id.umeng_example_analytics_social:
UMPlatformData platform = new UMPlatformData(UMedia.SINA_WEIBO, "user_id");
platform.setGender(GENDER.MALE); // optional
platform.setWeiboId("weiboId"); // optional
MobclickAgent.onSocialEvent(this, platform);
case R.id.umeng_example_analytics_signin:
MobclickAgent.onProfileSignIn("example_id");
case R.id.umeng_example_analytics_signoff:
MobclickAgent.onProfileSignOff();
public boolean onKeyDown(int keyCode, KeyEvent event) {
if (keyCode == KeyEvent.KEYCODE_BACK) {
return super.onKeyDown(keyCode, event);
// /对于好多应用,会在程序中杀死 进程,这样会导致我们统计不到此时Activity结束的信息,
// /对于这种情况需要调用 'MobclickAgent.onKillProcess( Context )'
// /方法,保存一些页面调用的数据。正常的应用是不需要调用此方法的。
private void Hook() {
AlertDialog.Builder builder = new AlertDialog.Builder(mContext);
builder.setPositiveButton("退出应用", new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int whichButton) {
MobclickAgent.onKillProcess(mContext);
int pid = android.os.Process.myPid();
android.os.Process.killProcess(pid);
builder.setNeutralButton("后退一下", new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int whichButton) {
builder.setNegativeButton("点错了", new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int whichButton) {
builder.show();
1、在libs目录加入下面sdk包:
libcrash_analysis.so
user_profile_mtj_1.5.jar
2、在AndroidManifest.xml中补充权限定义,以及meta-data参数定义,包括BaiduMobAd_STAT_ID、BaiduMobAd_CHANNEL等等,其中BaiduMobAd_STAT_ID需要到百度网站上注册申请;
3、代码里先设置采集参数,然后开始采集行为事件;StatService
百度统计分析主要用到StatService类。下面是与设置有关的方法说明:
setDebugOn : 设置是否开启调试模式。true为开启调试,false为关闭调试。
setSessionTimeOut : 设置session的超时时间,单位秒。
setAppKey : 设置appkey。建议在AndroidManifest.xml中填写。
setAppChannel : 设置应用的渠道。
setOn : 打开崩溃错误收集。默认是关闭的
setLogSenderDelayed : 设置启动时日志发送的延时,单位秒。
setSendLogStrategy : 设置日志发送的策略。SendStrategyEnum.APP_START表示应用启动时发送,SendStrategyEnum.ONCE_A_DAY表示每天发送一次,SendStrategyEnum.SET_TIME_INTERVAL表示固定时间间隔发送。
下面是与事件有关的方法说明:
onPageStart : 页面启动事件。
onPageEnd : 页面结束事件。
onResume : 恢复统计。
onPause : 暂停统计。
onEvent : 普通事件,一般是点击事件
onEventDuration : 持续一段时间的事件。
onEventStart : 事件开始。
onEventEnd : 事件结束。
下面是百度统计分析的代码例子:
import android.util.L
import android.view.V
import android.view.View.OnClickL
import android.widget.B
import android.widget.TextV
import com.baidu.mobstat.NativeCrashH
import com.baidu.mobstat.SendStrategyE
import com.baidu.mobstat.StatS
import com.example.exmanalysis.baidu.AnotherDemoActivity1;
import com.example.exmanalysis.baidu.C
import com.example.exmanalysis.baidu.DemoActivity2;
import com.example.exmanalysis.baidu.DemoActivity3;
import com.example.exmanalysis.baidu.WebViewA
import com.example.exmanalysis.baidu.appfragment.AppFragmentDemoA
import com.example.exmanalysis.baidu.supportv4fragment.MainFragmentA
public class BaiduActivity extends Activity {
private Button btnP
private Button btnN
private Button btnW
private Button btnE
private Button btnNativeE
private Button btnSetTV;
private Button btnE
private Button btnEventD
private Button btnEventS
private Button btnEventE
private Button btnFragmentP
private Button btnAppFragmentP
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.baidu_activity);
boolean isWear = getPackageManager().hasSystemFeature("android.hardware.type.watch");
Log.e("TEST", "isWear: " + isWear);
Log.e("TEAT", "manufacturer: " + Build.MANUFACTURER);
// 设置AppKey
// StatService.setAppKey("a9e2ad84a2"); // appkey必须在mtj网站上注册生成,该设置建议在AndroidManifest.xml中填写,代码设置容易丢失
* 设置渠道的推荐方法。该方法同setAppChannel(String), 如果第三个参数设置为true(防止渠道代码设置会丢失的情况),将会保存该渠道,每次设置都会更新保存的渠道,
* 如果之前的版本使用了该函数设置渠道,而后来的版本需要AndroidManifest.xml设置渠道,那么需要将第二个参数设置为空字符串,并且第三个参数设置为false即可。
* appChannel是应用的发布渠道,不需要在mtj网站上注册,直接填写就可以 该参数也可以设置在AndroidManifest.xml中
// StatService.setAppChannel(this, "RepleceWithYourChannel", true);
// 测试时,可以使用1秒钟session过期,这样不断的间隔1S启动退出会产生大量日志。
StatService.setSessionTimeOut(30);
// setOn也可以在AndroidManifest.xml文件中填写,BaiduMobAd_EXCEPTION_LOG,打开崩溃错误收集,默认是关闭的
StatService.setOn(this, StatService.EXCEPTION_LOG);
* 设置启动时日志发送延时的秒数&br/& 单位为秒,大小为0s到30s之间&br/& 注:请在StatService.setSendLogStrategy之前调用,否则设置不起作用
* 如果设置的是发送策略是启动时发送,那么这个参数就会在发送前检查您设置的这个参数,表示延迟多少S发送。&br/& 这个参数的设置暂时只支持代码加入,
* 在您的首个启动的Activity中的onCreate函数中使用就可以。&br/&
StatService.setLogSenderDelayed(0);
* 用于设置日志发送策略&br /& 嵌入位置:Activity的onCreate()函数中 &br /&
* 调用方式:StatService.setSendLogStrategy(this,SendStrategyEnum. SET_TIME_INTERVAL, 1, false); 第二个参数可选:
* SendStrategyEnum.APP_START SendStrategyEnum.ONCE_A_DAY SendStrategyEnum.SET_TIME_INTERVAL 第三个参数:
* 这个参数在第二个参数选择SendStrategyEnum.SET_TIME_INTERVAL时生效、 取值。为1-24之间的整数,即1&=rtime_interval&=24,以小时为单位 第四个参数:
* 表示是否仅支持wifi下日志发送,若为true,表示仅在wifi环境下发送日志;若为false,表示可以在任何联网环境下发送日志
StatService.setSendLogStrategy(this, SendStrategyEnum.SET_TIME_INTERVAL, 1, false);
// 调试百度统计SDK的Log开关,可以在Eclipse中看到sdk打印的日志,发布时去除调用,或者设置为false
StatService.setDebugOn(true);
String sdkVersion = StatService.getSdkVersion();
TextView sdkVersionTxtv = (TextView) findViewById(R.id.tv_sdk_version);
if (sdkVersion != null) {
sdkVersionTxtv.setText("sdk version is: " + sdkVersion);
btnPrev = (Button) findViewById(R.id.layout1_btn1);
btnNext = (Button) findViewById(R.id.layout1_btn2);
btnWebview = (Button) findViewById(R.id.layout1_btn_web_view);
btnException = (Button) findViewById(R.id.layout1_btn_excep);
btnNativeException = (Button) findViewById(R.id.layout1_btn_native_excep);
btnNativeException.setOnClickListener(new OnClickListener() {
public void onClick(View v) {
NativeCrashHandler.doNativeCrash();
btnSetTV = (Button) findViewById(R.id.layout1_btn_set_TV);
btnSetTV.setOnClickListener(new OnClickListener() {
public void onClick(View v) {
StatService.setForTv(BaiduActivity.this, true);
btnEvent = (Button) findViewById(R.id.layout1_btn_event);
btnEventDuration = (Button) findViewById(R.id.layout1_btn_event_duration);
btnEventStart = (Button) findViewById(R.id.layout1_btn_event_start);
btnEventEnd = (Button) findViewById(R.id.layout1_btn_event_end);
btnFragmentPage = (Button) findViewById(R.id.layout1_fragment);
btnAppFragmentPage = (Button) findViewById(R.id.layout1_app_fragment);
findViewById(R.id.btn_another_process).setOnClickListener(new View.OnClickListener() {
public void onClick(View v) {
Intent intent = new Intent(BaiduActivity.this, AnotherDemoActivity1.class);
startActivity(intent);
btnPrev.setOnClickListener(new OnClickListener() {
public void onClick(View v) {
Intent intent = new Intent();
intent.setClass(BaiduActivity.this, DemoActivity3.class);
BaiduActivity.this.startActivity(intent);
btnNext.setOnClickListener(new OnClickListener() {
public void onClick(View v) {
Intent intent = new Intent();
intent.setClass(BaiduActivity.this, DemoActivity2.class);
BaiduActivity.this.startActivity(intent);
btnWebview.setOnClickListener(new OnClickListener() {
public void onClick(View v) {
Intent intent = new Intent();
intent.setClass(BaiduActivity.this, WebViewActivity.class);
BaiduActivity.this.startActivity(intent);
btnException.setOnClickListener(new OnClickListener() {
public void onClick(View v) {
Thread t = new Thread() {
public void run() {
if (!MyApplication.SHIELD_EXCEPTION) {
Log.w(Conf.TAG, 10 / 0 + "");
t.start();
btnEvent.setOnClickListener(new OnClickListener() {
public void onClick(View v) {
StatService.onEvent(BaiduActivity.this.getApplicationContext(), "registered id", "pass", 1);
* 自定义事件的第一种方法,写入某个事件的持续时长
btnEventDuration.setOnClickListener(new OnClickListener() {
public void onClick(View v) {
// 事件id("registered id")的事件pass,其时长持续100毫秒
StatService.onEventDuration(BaiduActivity.this, "registered id", "pass", 100);
* 自定义事件的第二种方法,自己定义该事件的起始时间和结束时间
btnEventStart.setOnClickListener(new OnClickListener() {
public void onClick(View v) {
// 事件id("registered id")的事件pass,其时长持续10毫秒
StatService.onEventStart(BaiduActivity.this, "registered id", "pass"); // 必须和onEventEnd共用才行
* 自定义事件的第二种方法,自己定义该事件的起始时间和结束时间
btnEventEnd.setOnClickListener(new OnClickListener() {
public void onClick(View v) {
// 事件id("registered id")的事件pass,其时长持续10毫秒
StatService.onEventEnd(BaiduActivity.this, "registered id", "pass"); // 必须和onEventStart共用才行
btnFragmentPage.setOnClickListener(new OnClickListener() {
public void onClick(View v) {
Intent in = new Intent();
in.setClass(BaiduActivity.this, MainFragmentActivity.class);
startActivity(in);
btnAppFragmentPage.setOnClickListener(new OnClickListener() {
public void onClick(View v) {
if (Build.VERSION.SDK_INT &= Build.VERSION_CODES.HONEYCOMB) {
Intent in = new Intent();
in.setClass(BaiduActivity.this, AppFragmentDemoActivity.class);
startActivity(in);
public void onResume() {
super.onResume();
//页面起始(每个Activity中都需要添加,如果有继承的父Activity中已经添加了该调用,那么子Activity中务必不能添加)
//不能与StatService.onPageStart一级onPageEnd函数交叉使用
StatService.onResume(this);
public void onPause() {
super.onPause();
//页面结束(每个Activity中都需要添加,如果有继承的父Activity中已经添加了该调用,那么子Activity中务必不能添加)
//不能与StatService.onPageStart一级onPageEnd函数交叉使用
StatService.onPause(this);
1、在libs目录加入下面sdk包:
libMtaNativeCrash.so
mid-sdk-2.3.jar
mta-android-stat-sdk-2.2.0_.jar
2、在AndroidManifest.xml中补充权限定义,以及meta-data参数定义,包括TA_APPKEY、InstallChannel等等,其中TA_APPKEY需要到腾讯网站上注册申请;
3、代码里先设置采集参数,然后开始采集行为事件;StatConfig
腾讯统计分析的参数设置用的是StatConfig类,主要方法说明如下:
setDebugEnable : 设置是否开启调试模式。true为开启调试,false为关闭调试。
setSessionTimoutMillis : 设置session的超时时间,单位秒。
setAppKey : 设置appkey。建议在AndroidManifest.xml中填写。
setInstallChannel : 设置安装的渠道。
setAutoExceptionCaught : 设置是否自动采集崩溃信息(即app未处理的异常)。true表示自动采集,false表示不采集。
setStatSendStrategy : 设置日志发送的策略。StatReportStrategy.PERIOD表示按时间间隔发送,StatReportStrategy.INSTANT实时发送即每个行为都立即发送,StatReportStrategy.ONLY_WIFI表示只在wifi网络下发送,StatReportStrategy.BATCH表示批量发送即达到缓存临界值时触发,StatReportStrategy.APP_LAUNCH表示应用启动时发送。
setEnableSmartReporting : 设置是否允许在WIFI网络下实时上报。
setSendPeriodMinutes : 设置日志发送的时间间隔。单位分钟,该方法在StatReportStrategy.PERIOD时启用。
setMaxStoreEventCount : 设置缓存中的事件最大数目。该方法在StatReportStrategy.BATCH时启用。StatService
腾讯统计分析的事件跟踪用的是StatService类,主要方法说明如下:
startStatService : 开始统计服务。如果集成统计服务的是普通app,则无需调用该方法;如果提供出来的是第三方sdk,由于jar包不包含AndroidManifest.xml,因此必须在代码中调用该方法,才能启用统计服务。
onResume : 恢复统计。
onPause : 暂停统计。
addActionListener : 监听前后台状态。该方法的参数为StatActionListener对象,对象内部需实现两个方法,分别是前台运行onBecameForeground、后台运行onBecameBackground。
trackCustomEvent : 跟踪自定义事件。
trackCustomBeginEvent : 跟踪自定义事件开始。
trackCustomEndEvent : 跟踪自定义事件结束。
trackCustomKVEvent : 跟踪自定义的key-value事件。
trackCustomBeginKVEvent : 跟踪自定义的key-value事件开始。
trackCustomEndKVEvent : 跟踪自定义的key-value事件结束。
reportError : 上报错误信息。
reportException : 上报异常信息。
import java.util.HashM
import java.util.M
import java.util.P
import android.app.A
import android.app.ActivityM
import android.content.C
import android.os.B
import android.os.E
import android.os.MemoryF
import android.util.L
import android.view.V
import android.widget.B
import com.tencent.stat.StatAppM
import com.tencent.stat.StatC
import com.tencent.stat.StatNativeCrashR
import com.tencent.stat.StatS
import com.tencent.stat.StatServiceI
public class TencentActivity extends Activity {
private final static String TAG = "TencentActivity";
private Context ctx =
private Button btn_customevent_args_count =
private Button btn_customevent_kv_count =
private Button btn_customevent_args_duration_begin =
private Button btn_customevent_args_duration_end =
private Button btn_customevent_kv_duration_begin =
private Button btn_customevent_kv_duration_end =
private Button btn_report_error =
private Button btn_report_exception =
private Button btn_catch_unhandled_exception =
private Button btn_init_nativeCrash =
private Button btn_catch_native_crash =
private Button btn_monitor_events =
public void onActivityOpen() { // 你的函数
Properties prop = new Properties();
prop.setProperty("aty", "抢票活动"); // 活动页面
prop.setProperty("gid", "潜在付费用户"); // 用户组名称
prop.setProperty("attr", "1"); // 用户属性(年龄、性别等)
prop.setProperty("act_type", "1"); // 行为类型(最近30天启动过、最近30天使用时长超过、最近30天是否有过升级行为等)
prop.setProperty("act_val", "10"); // 行为取值
StatService.trackCustomKVEvent(this, "mta_tag_activity_open", prop);
public void onActivityClick2() { // 你的函数
Properties prop = new Properties();
prop.setProperty("aty", "抢票活动"); // 活动页面
prop.setProperty("btn", "报名"); // 按钮
prop.setProperty("gid", "潜在付费用户"); // 用户组名称
prop.setProperty("attr ", "1"); // 用户属性(年龄、性别等)
prop.setProperty("act_type ", "1"); // 行为类型(最近30天启动过、最近30天使用时长超过、最近30天是否有过升级行为等)
prop.setProperty("act_val ", "10"); // 行为取值
StatService.trackCustomKVEvent(this, "mta_tag_activity_click", prop);
public void onUserPay() { // 你的函数
Properties prop = new Properties();
prop.setProperty("scene", "通关"); // 付费场景
prop.setProperty("amount", "350"); // 付费金额
prop.setProperty("way", "手机支付"); // 付费方式(可选择上报)
StatService.trackCustomKVEvent(null, "mta_tag_user_pay", prop);
MemoryFile memoryFile =
private View.OnClickListener l = new View.OnClickListener() {
public void onClick(View v) {
Log.d(TAG, "ctx==" + ctx);
int id = v.getId();
switch (id) {
case R.id.btn_customevent_args_count:
StatService.trackCustomEvent(ctx, "trackCustomEvent", "args");
StatService.trackCustomEvent(ctx, "id1", "args");
StatService.trackCustomEvent(ctx, "id2", "");
StatService.trackCustomEvent(ctx, "trackCustomEvent", null);
StatServiceImpl.trackBackground(getApplicationContext(), 10, null);
case R.id.btn_customevent_kv_count:
Properties prop = new Properties();
prop.setProperty("key", "value");
prop.setProperty("key2", "value2");
StatService.trackCustomKVEvent(ctx, "trackCustomKVEvent", prop);
prop = new Properties();
prop.setProperty("a", "b");
StatService.trackCustomKVEvent(ctx, "4", prop);
StatService.trackCustomKVEvent(ctx, "trackCustomKVEvent", prop);
prop = new Properties();
prop.setProperty("num", "3434");
StatService.trackCustomKVEvent(ctx, "trackCustomKVEvent", prop);
case R.id.btn_customevent_args_duration_begin:
StatService.trackCustomBeginEvent(ctx, "trackCustomEvent", "loadConfigFile");
case R.id.btn_customevent_args_duration_end:
StatService.trackCustomEndEvent(ctx, "trackCustomEvent", "loadConfigFile");
case R.id.btn_customevent_kv_duration_begin:
Properties properties = new Properties();
properties.setProperty("load", "config");
StatService.trackCustomBeginKVEvent(ctx, "trackCustomEvent", properties);
case R.id.btn_customevent_kv_duration_end:
properties = new Properties();
properties.setProperty("load", "config");
StatService.trackCustomEndKVEvent(ctx, "trackCustomEvent", properties);
case R.id.btn_report_error:
StatService.reportError(ctx, "I hate error.");
StatService.commitEvents(getApplicationContext(), -1);
case R.id.btn_report_exception:
String myNull =
int length = myNull.length();
} catch (NullPointerException ex) {
StatService.reportException(ctx, ex);
case R.id.btn_monitor_events:
// 新建监控接口对象
StatAppMonitor monitor = new StatAppMonitor("ping:www.qq.com");
// 接口开始执行
String ip = "www.qq.com";
Runtime run = Runtime.getRuntime();
java.lang.Process proc =
String str = "ping -c 3 -i 0.2 -W 1 " +
long starttime = System.currentTimeMillis();
proc = run.exec(str);
int retCode = proc.waitFor();
long difftime = System.currentTimeMillis() -
// 设置接口耗时
monitor.setMillisecondsConsume(difftime);
// 设置接口返回码
monitor.setReturnCode(retCode);
// 设置请求包大小,若有的话
monitor.setReqSize(1000);
// 设置响应包大小,若有的话
monitor.setRespSize(2000);
// 设置抽样率,默认为1,表示100%。如果是50%,则填2(100/50),如果是25%,则填4(100/25),以此类推。
// monitor.setSampling(2);
if (retCode == 0) {
Log.d(TAG, "ping连接成功");
// 标记为成功
monitor.setResultType(StatAppMonitor.SUCCESS_RESULT_TYPE);
Log.d(TAG, "ping测试失败");
// 标记为逻辑失败,可能由网络未连接等原因引起的,但对于业务来说不是致命的,是可容忍的
monitor.setResultType(StatAppMonitor.LOGIC_FAILURE_RESULT_TYPE);
} catch (Exception e) {
Log.d(TAG, e.getMessage());
// 接口调用出现异常,致命的,标识为失败
monitor.setResultType(StatAppMonitor.FAILURE_RESULT_TYPE);
} finally {
proc.destroy();
// 上报接口监控的信息
StatService.reportAppMonitorStat(ctx, monitor);
Map&String, Integer& map = new HashMap&String, Integer&();
map.put("www.qq.com", 80);
map.put("pingma.qq.com", 80);
StatService.testSpeed(ctx, map);
case R.id.btn_catch_unhandled_exception:
int i = 1 / 0;
case R.id.btn_init_nativeCrash:
String tombfilepath = Environment.getExternalStorageDirectory()
.getAbsolutePath() + "/my";
StatConfig.initNativeCrashReport(ctx, null);
case R.id.btn_catch_native_crash:
StatNativeCrashReport.doNativeCrashTest();
String getCurProcessName(Context context) {
int pid = android.os.Process.myPid();
ActivityManager mActivityManager = (ActivityManager) context
.getSystemService(Context.ACTIVITY_SERVICE);
for (ActivityManager.RunningAppProcessInfo appProcess : mActivityManager
.getRunningAppProcesses()) {
if (appProcess.pid == pid) {
return appProcess.processN
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_tencent);
// 高级功能:在线配置更新
// String onOrOff = StatConfig.getCustomProperty("switch", "off");
// Log.d(TAG, "switch" + onOrOff);
// if(onOrOff.equalsIgnoreCase("on")){
// // 打开某项功能
// // 禁用某项功能
// String appid = "互联的appid";
// String appkey = "Aqc" +
// StatConfig.setAutoExceptionCaught(false); // 禁止捕获app未处理的异常
// StatConfig.setEnableSmartReporting(true); // 禁止WIFI网络实时上报
// StatConfig.setSendPeriodMinutes(24 * 60); // PERIOD间隔周期,24小时
// StatConfig.setStatSendStrategy(StatReportStrategy.PERIOD); //
// PERIOD上报策略
// StatService.startStatService(this, appkey,
// com.tencent.stat.common.StatConstants.VERSION);
// } catch (MtaSDkException e) {
// Log.e("DEBUG", "MTA init Failed.");
initActivity();
private void initActivity() {
setTitle("常用统计分析");
btn_customevent_args_count = (Button) findViewById(R.id.btn_customevent_args_count);
btn_customevent_kv_count = (Button) findViewById(R.id.btn_customevent_kv_count);
btn_customevent_args_duration_begin = (Button) findViewById(R.id.btn_customevent_args_duration_begin);
btn_customevent_args_duration_end = (Button) findViewById(R.id.btn_customevent_args_duration_end);
btn_customevent_kv_duration_begin = (Button) findViewById(R.id.btn_customevent_kv_duration_begin);
btn_customevent_kv_duration_end = (Button) findViewById(R.id.btn_customevent_kv_duration_end);
btn_report_error = (Button) findViewById(R.id.btn_report_error);
btn_report_exception = (Button) findViewById(R.id.btn_report_exception);
btn_catch_unhandled_exception = (Button) findViewById(R.id.btn_catch_unhandled_exception);
btn_catch_native_crash = (Button) findViewById(R.id.btn_catch_native_crash);
btn_init_nativeCrash = (Button) findViewById(R.id.btn_init_nativeCrash);
btn_monitor_events = (Button) findViewById(R.id.btn_monitor_events);
btn_customevent_args_count.setOnClickListener(l);
btn_customevent_kv_count.setOnClickListener(l);
btn_customevent_args_duration_begin.setOnClickListener(l);
btn_customevent_args_duration_end.setOnClickListener(l);
btn_customevent_kv_duration_begin.setOnClickListener(l);
btn_customevent_kv_duration_end.setOnClickListener(l);
btn_report_error.setOnClickListener(l);
btn_report_exception.setOnClickListener(l);
btn_catch_unhandled_exception.setOnClickListener(l);
btn_init_nativeCrash.setOnClickListener(l);
btn_catch_native_crash.setOnClickListener(l);
btn_monitor_events.setOnClickListener(l);
protected void onResume() {
super.onResume();
StatService.onResume(this);
protected void onPause() {
super.onPause();
StatService.onPause(this);
没有更多推荐了,
加入CSDN,享受更精准的内容推荐,与500万程序员共同成长!}

我要回帖

更多关于 baiduzhid 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信