最近在做一款采集Android应用数据的工具包,类似友盟、flurry、localytics这种:提供一个工具jar包供应用开发者使用,开发者只需要调用几个简单的api就可以完成对基本信息的采集。
首先,稳定性一定要非常好。不能给应用引入问题。
其次,我觉得这个工具包要足够的简单。上面列举的几款已经发布的数据采集工具包都做到了这点,使用都很简单。相比之下,友盟是做的比较好的,功能也最多,分析出来的数据也最多。flurry、localytics呢,功能精简,虽不如友盟功能多,但是核心功能都有。
再者,工具包要占用足够少的资源,这些资源包括打包后的jar包小、启动后占用内存小、上传数据到服务器消耗数据流量小等等。
最后,才是尽可能多的手机数据。
基于以上的思考,我使用并分析了localytics的实现(它是开源的且代码注释很全,其它两个未开源且都对源代码做了混淆)。
下面是localytics实现的类图,从中可以得到它的架构和一些实现细节。
localytics引入了session的概念,它可以大致理解为:一次用户使用app的行为会话。举个例子:当用户在home screen点击app A的图标,那么A启动,这时session也随之而创建;当用户使用A完成了想要做的事情之后,按back或者home key返回home screen时,session会将一些未上传的数据保存至数据库。如果定义这个session的超时时间为30s,那么如果30s内用户以各种方式进入该应用,那么session会尝试从数据库中自我恢复;如果用户再次进入该应用的时间超过30s,那么就会重新创建新session,并且将数据库中的旧session缓存数据清除。
如果以用户使用app的次数作为一项统计指标,引入session的会帮助解决一些问题:过滤短时间内用户频繁进入/退出应用而产生的无意义的访问信息;多应用之间切换,而不会产生多次访问记录(譬如weibo客户端启动照相机程序,然后将拍的照片返回给weibo客户端);session还可以用来保存用户的页面跳转轨迹;等等。总之,使用session会使得一些统计数据更准确或者便利;缺点是会加入复杂度,我们需要加入持久化/恢复session的代码。
LocalyticsSession就是上面所说的session的一个实现。它的功能主要分为两部分:1.提供给app接口;2.持有2个handler,一个负责处理session相关的事情,另外一个负责上传数据到服务器。
LocalyticsProvider提供与数据库的操作。由上图所示,SessionHandler和UploadHandler都需要使用到它。
DatapointHelper是一个收集手机端信息的帮助类,里面封装了跟Android相关的信息获取API。
JsonObjects定义了一些列上传到服务器的数据所对应的键值。
总得来看,这个收集用户信息的工具包还是比较简单的。手机端的信息采集,其实跟采集网页数据是相似的,就像这个session概念,也可以看做是从web领域借鉴过来的。对于一个分析系统而言,其核心还是后端数据分析与挖掘。
2012.3.8 update:
补充几个读取Android一些信息的API:
- AndroidManifest.xml相应的信息通过PackageInfo来获取
- android.content.pm 包里有很多可以获取系统各式各样信息的类。例如:通过PackageInfo可以获取AndroidManifest.xml文件中定义的信息;PackageManager可以获取多种跟程序包相关的信息。
- android.telephony.TelephoneyManager用于获取跟telephony服务及状态相关的信息。调用它的接口需要加入相应的权限,具体使用到的权限会在每个接口文档中说明。
- wifi相关的信息需要通过WifiManager一些方法获得
- 大小: 44.4 KB
分享到:
相关推荐
学习这个项目,开发者不仅可以掌握Android客户端开发的基本技能,还能深入理解现代Android应用中流行的设计模式和工具的使用,对于提升Android开发能力,尤其是进行内容采集类应用的开发,有着重要的参考价值。...
在具体实现方面,新闻采集器和Android客户端App的设计涉及到了服务器端的新闻采集、客户端的数据展示和用户交互等多个模块。服务器端需要处理新闻信息的抓取、存储和传输;客户端需要实现新闻信息的展示和用户交互...
Android 客户端应用开发涉及的技术包括Java编程语言、Android SDK(软件开发工具包)、Android Studio集成开发环境以及XML布局设计等。 在本文中,作者王柯和马宏斌探讨了一种基于Android平台的数据采集系统的设计...
《基于Android平台的数据采集系统设计与开发》 随着科技的发展,Android平台因其开源性和开放性在移动设备应用开发中占据重要地位。本文主要探讨的是基于Android平台的数据采集系统的开发,适用于地理数据采集等...
1.6. 系统结构说明:系统主要由客户端(Android应用程序)和服务器端两部分组成,客户端负责数据采集和用户交互,服务器端处理设备连接和数据传输。 1.7. 系统用例图:包括用户登录、设备搜索、视频预览、录像、...
Android系统的软件开发工具包(SDK)提供了CDC类USB通讯相关的操作方法,包括设备枚举、打开设备、端口操作、批量传输等。这些操作使得Android设备能够与STM32单片机实现USB2.0 FullSpeed通信。开发者在开发过程中可以...
《无线智能表数据采集与管理系统(客户端)软件设计——基于Kotlin技术的实现》 在当今信息化社会,无线智能表数据采集与管理系统扮演着至关重要的角色。这些系统能够实时、高效地收集各种智能仪表(如水表、电表、...
《基于地理位置信息的智慧乡镇Android数据采集系统设计与实现》 在现代乡村建设和管理中,信息采集是一项重要的任务,但传统的实地走访方式效率低下。针对这一问题,文章提出了利用地理信息技术,特别是Android平台...
在本项目中,我们主要探讨的是如何使用Java技术在Android客户端上实现对正方教务系统的数据抓取。正方教务系统是中国许多高校广泛采用的一款教务管理系统,它包含了丰富的学籍、教学、考试等信息。为了从该系统中...
在Android平台上进行视频采集并利用RTSP(Real Time Streaming Protocol)进行实时传输是移动应用开发中的常见需求,尤其是在开发视频监控、直播应用等场景。这个压缩包提供的"Android视频采集+RTSP完整代码(可用)...
在IT行业中,手机监控系统是一种广泛应用的技术,尤其在安全、企业管理以及家庭监控等领域。...通过学习和实践这样的项目,开发者不仅可以提升Android客户端的开发能力,也能增强服务器端开发和多媒体处理的经验。
【系统架构】系统由三部分构成:井场数据采集与传输、基地服务器数据接收与存储、Android手机客户端数据应用。井场部分利用传感器收集实时数据,通过WITSML API进行数据管理,并通过TCP/IP协议将数据实时发送至...
ESP32是一款高性能、低功耗的Wi-Fi和蓝牙双模物联网微控制器,常用于无线通信和传感器数据采集。STM32则是一个广泛使用的ARM Cortex-M系列MCU,适合复杂控制任务。这两种硬件可能用于采集人脸图像并初步处理,然后...
在标签中,“Android客户端应用开发”表明了这是一个运行在Android设备上的应用程序,涉及到客户端软件的设计和编程。“参考文献”可能提供了开发过程中参考的相关技术文档、研究论文或API文档,是学习和理解该工具...
由于Android系统不支持直接处理ACCESS数据库,作者提出了一种创新的数据采集和处理方法,通过特定的步骤和工具,实现了在Android设备上进行林业基础数据采集并将其导入到ArcGIS个人地理数据库中。 【主要知识点】 ...
在基于Android的远程医疗监测系统设计中,Android客户端是核心部分,它需要具备数据采集、显示、存储以及报警推送等功能。Android系统以其开源、跨平台的特性,成为移动设备上开发此类应用的理想选择。开发者需要...
【基于Android平台的温度采集软件系统设计】 在现代科技中,温度监测系统在各个领域扮演着重要的角色,从工业生产到日常生活,实时监控温度对于确保安全和效率至关重要。随着移动设备的普及,尤其是Android操作系统...
除了内置的命令行工具,还有一些第三方工具可以帮助我们收集客户端性能数据。例如,Visual Studio Profiler可以进行代码级别的性能分析,提供函数调用的耗时详情。另外,像JProfiler、YourKit等Java性能分析工具对于...