卧疾丰暇豫,翰墨时间作。这篇文章主要讲述Android Studio第十五期 - 友盟统计集成相关的知识,希望能为你提供帮助。
首先是官网的地址:http://dev.umeng.com/analytics/android-doc/integration#2_5
然后是注意实例化到Application中的代码:
private void setUMEngAnalsys() { //开启Debug模式 上线可关闭 MobclickAgent.setDebugMode(true); // SDK在统计Fragment时,需要关闭Activity自带的页面统计, // 然后在每个页面中重新集成页面统计的代码(包括调用了 onResume 和 onPause 的Activity)。 MobclickAgent.openActivityDurationTrack(false); MobclickAgent.setAutoLocation(true); // MobclickAgent.setSessionContinueMillis(1000); MobclickAgent.updateOnlineConfig(this); }
权限和key的配置参照官网文档 应该没问题:
在Gradle依赖中添加:
dependencies {
compile ‘com.umeng.analytics:analytics:latest.integration‘}
如果无法正常集成请添加如下代码 :
allprojects {
repositories {
mavenCentral()
}
}
manifest的配置主要包括添加权限,填写Appkey和填写渠道id三部分,代码示例如下:
< manifest……> < uses-sdk android:minSdkVersion="4"> < /uses-sdk> < uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"> < /uses-permission> < uses-permission android:name="android.permission.ACCESS_WIFI_STATE" /> < uses-permission android:name="android.permission.INTERNET"> < /uses-permission> < uses-permission android:name="android.permission.READ_PHONE_STATE"> < /uses-permission> < application ……> …… < activity ……/> < meta-data android:value="https://www.songbingjia.com/android/YOUR_APP_KEY" android:name="UMENG_APPKEY"> < /meta-data> < meta-data android:value="https://www.songbingjia.com/android/Channel ID" android:name="UMENG_CHANNEL"/> < /application> < /manifest>
最后举例说明:
1. MobclickAgent.onEvent(Context context, String eventId); context 指当前的Activity eventId 为当前统计的事件ID。 示例:统计微博应用中"转发"事件发生的次数,那么在转发的函数里调用 MobclickAgent.onEvent(mContext,"Forward"); 2. MobclickAgent.onEvent(Context context, String eventId, HashMap map); map 为当前事件的属性和取值(Key-Value键值对)。 示例:统计电商应用中“购买”事件发生的次数,以及购买的商品类型及数量,那么在购买的函数里调用: HashMap< String,String> map = new HashMap< String,String> (); map.put("type","book"); map.put("quantity","3"); MobclickAgent.onEvent(mContext, "purchase", map); 3. MobclickAgent.onEventValue(Context context, String id, Map< String,String> m, int du) id 为事件ID map 为当前事件的属性和取值 du 为当前事件的数值为当前事件的数值,取值范围是-2,147,483,648 到 +2,147,483,647 之间的有符号整数,即int 32类型,如果数据超出了该范围,会造成数据丢包,影响数据统计的准确性。 示例:统计一次音乐播放,包括音乐类型,作者和播放时长,可以在音乐播放结束后这么调用: int duration = 12000; //开发者需要自己计算音乐播放时长 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, duration);
这里注意一个地方如果要统计类似分类GridView的类别信息,比如这样的图:
文章图片
参照如下方式:
KeshiTongji.java
package com.kangxin.patient.module; import java.util.HashMap; public class KeshiTongji { public static final HashMap< String, String> map = new HashMap< String, String> (); public static void addmap() { map.put("6", "neurology"); // 神经内科 map.put("5", "neurosurgery"); // 神经外科 map.put("19", "ophthalmology"); // 眼科 map.put("16", "ENT"); // 耳鼻咽喉科 map.put("43", "Stom atology"); // 口腔科 map.put("25", "Head and neck surgery"); // 头颈外科 map.put("12", "Thoracic surgery"); // 胸外科 map.put("33", "Cardiac surgery"); // 心脏外科 map.put("44", "Respiratory"); // 呼吸内科 map.put("3", "Cardiovascular internal medicine"); // 心血管内科 map.put("21", "Digestive internal medicine"); // 消化内科 map.put("8", "General surgery"); // 普通外科 map.put("30", "Nephrology"); // 肾脏内科 map.put("34", "Spine surgery"); // 脊柱外科 map.put("35", "Joint branch"); // 骨关节科 map.put("28", "hand surgery"); // 手外科 map.put("23", "burns surgery"); // 烧伤科 map.put("36", "Sports discipline"); // 运动学科 map.put("15", "gynaecology"); // 妇科 map.put("38", "obstetric"); // 产科 map.put("48", "Breast surgery"); // 乳腺外科 map.put("31", "Son of internal"); // 儿内科 map.put("39", "Son of surgery"); // 儿外科 map.put("37", "oncology"); // 肿瘤科 map.put("13", "dermatology"); // 皮肤科 map.put("29", "endocrinology"); // 内分泌科 map.put("24", "Rheumatology"); // 风湿免疫科 map.put("22", "Hematology"); // 血液内科 map.put("17", "Allergy branch"); // 变态反应科 map.put("9", "Radiology department"); // 放射科 map.put("49", "Occupational medicine"); // 职业病科 map.put("0", "Vascular medicine"); // 血管内科 map.put("45", "Palliative care office"); // 姑息关怀科 map.put("50", "Geriatrics"); // 老年科 map.put("51", "orthopaedic"); // 整形科 map.put("52", "pain"); // 疼痛科 map.put("4", "urology"); // 泌尿外科 map.put("0", "male"); // 男科 } }
调用方法:
KeshiTongji.addmap(); Set< String> mapSet = KeshiTongji.map.keySet(); Iterator< String> iterator = mapSet.iterator(); while (iterator.hasNext()) { String key = iterator.next(); if (key.equals(listItem.getId() + "")) { MobclickAgent.onEvent(mContext, KeshiTongji.map.get(key)); } }
总结:大部分的操作都是直接传Id对应友盟后台上传的key,格式:
click1,点击,0; click2,注册,0; click3,登陆,0
注:
格式: .txt或.csv; UTF-8编码
字段: 事件id, 事件名称, 事件类型(1表示计算事件,0表示计数事件)。
字段用英文逗号分隔;每个事件一行。
文章图片
扫描我们的时光~
【Android Studio第十五期 - 友盟统计集成】本文出自 “梁肖技术中心” 博客,请务必保留此出处http://liangxiao.blog.51cto.com/3626612/1866217
推荐阅读
- HTML5移动开发之路(24)—— PhoneGap Android开发环境搭建
- android实时视频网络传输方案总结(一共有五套)
- win10 系统无法通过数据线连接安卓手机,提示无法识别驱动器的解决方案
- Android开发者的混淆使用手册
- Android(IPC之AIDL的学习和总结)
- android launchMode理解以及应用场景
- 安卓开发之基于AccessibilityService实现聊天机器人对其他应用的调起
- Android开发学习——Android项目的目录结构
- Android圆角图片和圆形图片实现总结