在这里简单的介绍下怎么统计自己研发的APP 的用户活跃度,和使用量,以此来展示自己APP的用户使用量!

我们的APP都需要注入数据分析,以供我们实时的了解APP的下载和使用量提供了依据!
不过我还是更多的偏好使用Umeng 统计,但因为项目要求,需要集成百度统计,为此简单的介绍下使用!

集成开发步骤:

在百度统计Web网站https://mtj.baidu.com/web/welcome/login申请百度统计的AppKey
点击SDK下载 https://mtj.baidu.com/web/sdk/index 下载SDK 当中包括先关的jar 包
在自己的基类中添加统计的相关API

import com.baidu.mobstat.StatService;
import com.wly.frame.utils.AppManager; import android.app.Activity; public class BaseActivity extends Activity { @Override
public void setContentView(int layoutResID) {
super.setContentView(layoutResID); AppManager.getAppManager().addActivity(this);
} @Override
protected void onResume() {
// TODO Auto-generated method stub
super.onResume();
StatService.onResume(this);
} @Override
protected void onPause() {
// TODO Auto-generated method stub
super.onPause();
StatService.onPause(this);
} @Override
protected void onDestroy() {
super.onDestroy();
AppManager.getAppManager().finishActivity(this);
} }

在AndroidManifest.xml 清单文件中声明相关权限 渠道号,Appkey 等

 <!-- Baidu -->
<!-- 需要申明的权限 -->
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
<uses-permission android:name="android.permission.READ_PHONE_STATE" />
<uses-permission android:name="android.permission.WRITE_SETTINGS" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
<uses-permission android:name="android.permission.GET_TASKS" />
<uses-permission android:name="android.permission.BLUETOOTH" />
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.MOUNT_UNMOUNT_FILESYSTEMS" />
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" /> <uses-permission android:name="android.permission.MOUNT_UNMOUNT_FILESYSTEMS" />

在 meta-data 中声明相关的AppKey

<!-- Baidu meta-data -->
<!-- 您从百度网站获取的APP KEY -->
<meta-data
android:name="BaiduMobAd_STAT_ID"
android:value="7c0c6c6015" /> <!-- abcd1234 -->
<!-- 渠道商编号 -->
<meta-data
android:name="BaiduMobAd_CHANNEL"
android:value="Your Appkey Value
" /><!--自己的AppKey值 --> <!-- 是否开启错误日志统计,默认为false -->
<meta-data
android:name="BaiduMobAd_EXCEPTION_LOG"
android:value="true" />
<!-- 日志发送策略,可选值:APP_START、ONCE_A_DAY、SET_TIME_INTERVAL,默认为APP_START -->
<meta-data
android:name="BaiduMobAd_SEND_STRATEGY"
android:value="APP_START" />
<!-- 日志发送策略 为SET_TIME_INTERVAL时,需设定时间间隔(取消下行注释)。取值为1-24的整数,默认为1 -->
<!-- <meta-data android:name="BaiduMobAd_TIME_INTERVAL" android:value="" /> -->
<!-- 日志仅在wifi网络下发送,默认为false -->
<meta-data
android:name="BaiduMobAd_ONLY_WIFI"
android:value="false" />
<!-- 是否获取基站位置信息 ,默认为true -->
<meta-data
android:name="BaiduMobAd_CELL_LOCATION"
android:value="true" />
<!-- 是否获取GPS位置信息,默认为true -->
<meta-data
android:name="BaiduMobAd_GPS_LOCATION"
android:value="true" />
<!-- 是否获取WIFI位置信息,默认为true -->
<meta-data
android:name="BaiduMobAd_WIFI_LOCATION"
android:value="true" />

Application 的声明设置

让自己的Application extends FrontiaApplication

public class DemoApplication extends FrontiaApplication{

    @Override
public void onCreate(){
super.onCreate();
} }

在百度统计集成的SDK 文档中并没有阐述这点,本人是抱着试试的态度,然后就没有 继承 FrontiaApplication 这个东西!而是直接使用 DemoApplication extends Application 然后再清单文件中进行声明

<application
android:name="com.wly.frame.DemoApplication"
android:allowBackup="true"
android:icon="@drawable/ic_launcher"
android:label="@string/App_name"
android:theme="@style/AppTheme" >

经过测试也是可以统计的!不知是否是因为 百度统计的更新!还是什么,在此也没有做更多的了解!如果读者发现有什么问题可以告知?

统计示例:

统计Activity 界面
如果我们没有需求需要统计到具体的详细的界面我们可以直接在基类中声明统计的方法,需要注意的是,如果你在BaseClass 中声明了,切记在子类中不要声明相关统计API。

 public class BaseActivity extends Activity {

    @Override
public void setContentView(int layoutResID) {
super.setContentView(layoutResID); AppManager.getAppManager().addActivity(this);
} @Override
protected void onResume() {
// TODO Auto-generated method stub
super.onResume();
StatService.onResume(this);
} @Override
protected void onPause() {
// TODO Auto-generated method stub
super.onPause();
StatService.onPause(this);
} @Override
protected void onDestroy() {
super.onDestroy();
AppManager.getAppManager().finishActivity(this);
} }
  StatService.onResume(this);
StatService.onPause(this);
统计的是具体的包名。在Web网站观看的效果如下图

    • 统计具体的界面 
      当然统计所有的界面不太满足我们的需求,我们有时候需要具体分析,和了解某个具体的界面的访问量这是为了方便我们会更多的依赖于自定义页面统计以下的书写方式!

      StatService.onPageStart(Context  context,  Sring  pageName);
      StatService.onPageEnd(Context context, Sring pageName);
      public class FounActivity extends Activity implements OnClickListener{
      private TextView tv_back;
      private TextView tv_title;
      @Override
      protected void onCreate(Bundle savedInstanceState) {
      super.onCreate(savedInstanceState);
      setContentView(R.layout.activity_fount);
      initView();
      }
      private void initView() {
      tv_back = (TextView) findViewById(R.id.tv_back);
      tv_back.setOnClickListener(this); tv_title = (TextView) findViewById(R.id.tv_title);
      tv_title.setText("发现"); }
      @Override
      public void onClick(View v) {
      switch (v.getId()) {
      case R.id.tv_back:
      finish();
      break; default:
      break;
      }
      } @Override
      protected void onResume() {
      // TODO Auto-generated method stub
      super.onResume();
      StatService.onPageStart(this, "发现界面");
      } @Override
      protected void onPause() {
      // TODO Auto-generated method stub
      super.onPause();
      StatService.onPageEnd(this, "发现界面");
      } @Override
      protected void onDestroy() {
      // TODO Auto-generated method stub
      super.onDestroy();
      }
      }
      public class FounActivity extends Activity implements OnClickListener{
      private TextView tv_back;
      private TextView tv_title;
      @Override
      protected void onCreate(Bundle savedInstanceState) {
      super.onCreate(savedInstanceState);
      setContentView(R.layout.activity_fount);
      initView();
      }
      private void initView() {
      tv_back = (TextView) findViewById(R.id.tv_back);
      tv_back.setOnClickListener(this); tv_title = (TextView) findViewById(R.id.tv_title);
      tv_title.setText("发现"); }
      @Override
      public void onClick(View v) {
      switch (v.getId()) {
      case R.id.tv_back:
      finish();
      break; default:
      break;
      }
      } @Override
      protected void onResume() {
      // TODO Auto-generated method stub
      super.onResume();
      StatService.onPageStart(this, "发现界面");
      } @Override
      protected void onPause() {
      // TODO Auto-generated method stub
      super.onPause();
      StatService.onPageEnd(this, "发现界面");
      } @Override
      protected void onDestroy() {
      // TODO Auto-generated method stub
      super.onDestroy();
      }
      }

      这样的话就是统计的具体界面在Web网站看到的效果就是这样!

    • 统计Fragment界面
      因为项目之前的版本问题都是使用 在BaseFragment 添加StatService.onRsume(this),StatService.onPasuse(this)API,由于生命周期的原因,造成有的界面没有统计。
      解决方式:根据百度统计的SDK 文档,使用自定义界面进行统计,即可解决该问题,所以再统计Fragment的时候我们还是注入自定义统计界面的API。

      public class SportFragment extends Fragment{
      
      @Override
      public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
      return inflater.inflate(R.layout.fragment_contact_list, container, false);
      } @Override
      public void onResume() {
      // TODO Auto-generated method stub
      super.onResume();
      StatService.onPageStart(getActivity, "运动界面");
      }
      @Override
      public void onPause() {
      // TODO Auto-generated method stub
      super.onPause();
      StatService.onPageEnd(getActivity, "运动界面");
      } }

      这样就可以统计每个预览的Fragment 界面了。

        • 自定义事件

          统计某个按钮的热度,我们可以使用自定义事件,首先我们需要在Web 网站中注册并添加自定义事件,具体的操作就不在过多的赘述了,如果还有什么不了解可以参考百度 统计的SDK文档 
          API:

    • @params event_id 为在网站注册的点击事件id,二者必须对应
      StatService.onEvent(Context context, String event_id, String label, int acc)

      实例:

      button.setOnClickListener(new View.onClickListener(){
      @Override
      public void onClick(View v) {
      StatService.onEvent(MainActivity.this,"buildRequest","update",)
      }
      });

      截图就不在上传了!

      其实吧,在统计数据方面我还是喜欢使用UMeng统计,不知你们觉得的呢?但是毕竟是由于项目的要求,为此在简单的使用下!

Android 集成百度统计的更多相关文章

  1. Xamarin.Android 集成百度地图SDK

    前言:趁着周六闲得没事干,赶紧搞一搞Xamarin,最近也是怪无聊的,枯燥的生活不如打几行代码带劲:好了我们进入正题 我这篇文章时参考一位大佬的博客进行改变的,当然他写的需要一定的经验才可以看得懂,我 ...

  2. Android集成百度地图SDK

    本Demo中所含功能 1:定位,显示当前位置 2:地图多覆盖物(地图描点.弹出该点的具体信息) 3:坐标地址互相换算 4:POI兴趣点检索 5:线路查询(步行,驾车,公交) 6:绘制线路(OpenGL ...

  3. android 集成百度地图

    一.下载百度地图为我们提供的所有DEMO. 在这里边我选的是一键下载. 二.下载后有两个项目一个是用于eclipse.另一个是android studio.我选的是android studio. 我用 ...

  4. Android集成百度地图详细步骤和错误问题

    先看要实现的效果 第一步, 下载SDK,基础配置,百度开发文档很详细,直接附上链接http://lbsyun.baidu.com/index.php?title=androidsdk/guide/cr ...

  5. Android集成百度地图

    1. 百度地图api Android定位SDK Android地图SDK Android地图SDK<------

  6. Android 开发之集成百度地图的定位与地图展示

    app 应用中,大多数应用都具有定位功能,百度定位就成了开发人员的集成定位功能的首选,近期也在做定位功能,可是发现百度真是个大坑啊, sdk 命名更新了,相关代码却不更新,害得我花费了非常长时间来研究 ...

  7. android使用百度app分享,app统计出现的异常,FrontiaApplication类

    想在app里加入百度分享和百度统计.查看了百度移动统计的文档后下载官网给的demo.参照demo给出的代码给自己的app加入代码.以上步骤比较简单.不细说,下面说下此过程需要注意的一些点,不然会引发异 ...

  8. Android 友盟统计的集成与使用(包含多渠道打包配置)

    前言 app上线后,一般公司都希望跟踪app在市场上的使用情况.包括新增用户.活跃用户.渠道信息.错误信息等,还有例如商城类的app,需要跟踪用户最喜欢浏览哪种类型的店铺或商品.这些都可以通过集成友盟 ...

  9. Android Studio 项目中集成百度地图SDK报Native method not found: com.baidu.platform.comjni.map.commonmemcache.JNICommonMemCache.Create:()I错误

    Android Studio 项目中集成百度地图SDK报以下错误: java.lang.UnsatisfiedLinkError: Native method not found: com.baidu ...

随机推荐

  1. linux 查看进程启动时,用户的工作目录

    在linux下查看进程大家都会想到用 ps -ef|grep XXX可是看到的不是全路径,怎么看全路径呢?每个进程启动之后在 /proc下面有一个于pid对应的路径例如:ps -ef|grep pyt ...

  2. http请求全过程

    第一步:浏览器生成http请求信息(第五层) 1.分解url 当用户输入网址时,浏览器会以一定的规则分解网址, 以 http://www.cemabenteng.com/dir/index.html ...

  3. UML-6.2-用例-用例模型/用例/场景关系

    参与者:具有某些行为的人或事物.如上一章中的收银员. |_主要参与者:收银员. |_协助参与者:程序(自动付费.帮收银员验证输入要素) |_幕后参与者:政府等(电子签章取证找公证机构) 用例:一组相关 ...

  4. 使用 Dotfuscator 对代码进行混淆

    Dotfuscator 简介 作为一种高级语言,c# 类库很容易被 .NET Reflector 这样的工具反编译.攻击者很容易从代码中找到数据库连接方式,加解密方法等重要信息.使用 dnspy 这样 ...

  5. 关于DES加密之选择更新版

    数据加密算法(Data Encryption Algorithm,DEA)是一种对称加密算法,很可能是使用最广泛的密钥系统,特别是在保护金融数据的安全中,最初开发的DEA是嵌入硬件中的.通常,自动取款 ...

  6. PZ73H-PZ73X刀闸阀厂家,PZ73H-PZ73X刀闸阀价格 - 专题栏目 - 无极资讯网

    无极资讯网 首页 最新资讯 最新图集 最新标签   搜索 PZ73H-PZ73X刀闸阀 无极资讯网精心为您挑选了(PZ73H-PZ73X刀闸阀)信息,其中包含了(PZ73H-PZ73X刀闸阀)厂家,( ...

  7. hive Tutorial

    hive数据单元按照粒度从大到小,依次为 1.数据库database:可以用show databases; 命令查看所有的数据库,并用use d1; 命令来选中d1数据库,接下来就可以操作d1数据库中 ...

  8. unity 渲染第二步

    先不要用 unity shader 提供给你的转换矩阵,看看屏幕上的图形,你会学到更多. --- <unity 渲染箴言> 假设你 create 了一个 cube,放在默认的位置,默认的 ...

  9. 【爬虫】-爬取猫眼TOP100

    原文崔庆才<python3网络爬虫实战> 本文为自学记录,如有侵权,请联系删除 目标: 熟悉正则表达式,以及爬虫流程 获取猫眼TOP100榜单 1.网站分析 目标站点为http://www ...

  10. Oracle 数据表的管理

    1.创建表的的表名规则 a.必须已字母开头 b.长度不能超过30 c.不能是Oracle的保留字 d.只能使用如下字符:A-Z.a-z.1-9.#,$等 2.Oracle基本数据类型 2.1 字符型数 ...