集成步骤
详细步骤详见官方文档:http://dev.umeng.com/analytics/android-doc/integration
报表解读:http://dev.umeng.com/analytics/reports/dashboard
1、下载并导入SDK
- 只需将jar包拷到 libs 子目录下即可
2、配置清单文件
- 添加权限,填写appkey,填写channel(渠道,非必须)
3、代码中使用
- 在所有的Activity中都调用 MobclickAgent.onResume() 和MobclickAgent.onPause()方法
- 详细统计API详见官方文档
演示代码
public class MainActivity extends Activity {
private Context mContext;private final String mPageName = "AnalyticsHome";//页面名称,可自定义@Overridepublic void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.umeng_example_analytics);mContext = this;//使用集成测试服务MobclickAgent.setDebugMode(true);// 统计Fragment时,需要关闭Activity自带的页面统计,这样将不会再自动统计Activity。// 然后在每个页面中重新集成页面统计的代码(包括调用了 onResume 和 onPause 的Activity)。MobclickAgent.openActivityDurationTrack(false);// MobclickAgent.setAutoLocation(true);// MobclickAgent.setSessionContinueMillis(1000);}@Overridepublic void onResume() {super.onResume();MobclickAgent.onPageStart(mPageName);//统计页面(针对页面,页面可能是Activity 也可能是Fragment或View)MobclickAgent.onResume(mContext);}@Overridepublic void onPause() {super.onPause();MobclickAgent.onPageEnd(mPageName);MobclickAgent.onPause(mContext);}//******************************************************************************************public void onButtonClick(View view) {int id = view.getId();switch (id) {case R.id.umeng_example_analytics_signin:// 用户登录MobclickAgent.onProfileSignIn("example_id");//用户账号IDMobclickAgent.onProfileSignIn("WB", "userID");//第一个参数为:账号来源。当用户使用第三方账号登录时可以这样统计break;case R.id.umeng_example_analytics_signoff:// 用户退出MobclickAgent.onProfileSignOff();break;case R.id.umeng_example_analytics_event://普通事件:统计事件发生次数MobclickAgent.onEvent(mContext, "enent_bqt");//后一个参数eventId 为当前统计的【事件的ID】,是在友盟后台注册的break;case R.id.umeng_example_analytics_ekv://多属性事件:统计点击行为各属性被触发的次数Map<String, String> map_ekv = new HashMap<String, String>();map_ekv.put("type", "白乾涛");map_ekv.put("quantity", "3");MobclickAgent.onEvent(mContext, "enent_bqt2", map_ekv);break;//******************************************************************************************case R.id.umeng_example_analytics_event_begin://事件开始,不推荐MobclickAgent.onEventBegin(mContext, "music");MobclickAgent.onEventBegin(mContext, "music", "one");Map<String, String> map = new HashMap<String, String>();map.put("type", "popular");map.put("artist", "JJLin");MobclickAgent.onKVEventBegin(mContext, "music", map, "flag0");break;case R.id.umeng_example_analytics_event_end://事件结束,不推荐MobclickAgent.onEventEnd(mContext, "music");MobclickAgent.onEventEnd(mContext, "music", "one");MobclickAgent.onKVEventEnd(mContext, "music", "flag0");break;case R.id.umeng_example_analytics_social://社交统计UMPlatformData platform = new UMPlatformData(UMedia.SINA_WEIBO, "user_id");//参数:支持的平台,用户IDplatform.setGender(GENDER.MALE); // 性别,optional(可选)platform.setWeiboId("weiboId"); // optionalMobclickAgent.onSocialEvent(this, platform);break;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);//最后一个参数为:当前事件的数值break;//******************************************************************************************case R.id.umeng_example_analytics_make_crash://模拟程序崩溃"123".substring(10);break;case R.id.umeng_example_analytics_js_analytic://WebView统计startActivity(new Intent(this, WebviewAnalyticActivity.class));break;case R.id.umeng_example_analytics_fragment_stack://统计 Fragment 页面(Stack)startActivity(new Intent(this, FragmentStackActivity.class));break;case R.id.umeng_example_analytics_fragment_tabs://统计 Fragment 页面( Tab )startActivity(new Intent(this, FragmentTabsActivity.class));break;}}@Overridepublic boolean onKeyDown(int keyCode, KeyEvent event) {if (keyCode == KeyEvent.KEYCODE_BACK) {Hook();return true;}return super.onKeyDown(keyCode, event);}// 对于好多应用,会在程序中杀死 进程,这样会导致我们统计不到此时Activity结束的信息,// 对于这种情况需要调用 MobclickAgent.onKillProcess 方法,保存一些页面调用的数据。正常的应用是不需要调用此方法的。private void Hook() {AlertDialog.Builder builder = new AlertDialog.Builder(mContext);builder.setPositiveButton("退出应用", new DialogInterface.OnClickListener() {public void onClick(DialogInterface dialog, int whichButton) {//如果开发者调用 Process.kill 或者 System.exit 之类的方法杀死进程,请务必在此之前调用此方法,用来保存统计数据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) {finish();}});builder.setNegativeButton("点错了", new DialogInterface.OnClickListener() {public void onClick(DialogInterface dialog, int whichButton) {}});builder.show();}}