android 如何检测手机上每个app的使用情况?
PHP中文网
PHP中文网 2017-04-17 16:37:33
[Android讨论组]

我想要开发一个能检测用户什么时间使用了什么app,使用时间有多长的功能,目前使用AlarmManager和检测activity栈顶程序的方法,但效率不高,请问有没有好的实现发案?
谢谢。

PHP中文网
PHP中文网

认证0级讲师

全部回复(5)
怪我咯

自己的应用的话安利一下友盟统计,比你自己实现要来的简单容易,数据分析也会更专业。监测其它应用的话就算了。

大家讲道理

你这个不好做吧

高洛峰

如果监测你自己写的app,可以在你的app中加入第三方包统计使用人数,经常浏览界面等,国内一般使用友盟,talkingdata,百度移动统计…国外一般使用Flurry,Localytics,Google Analytics for Mobile…如果检测别的app,这个真心没办法检测他们的具体使用情况,可以参考第三方的分析~~

PHP中文网

程序启动的时候,会在Logcat中打印出一些日志信息,其中就有类似下面的日志,表明是启动了哪个程序

01-21 15:09:56.957: I/ActivityManager(240): START {act=android.intent.action.MAIN cat=[android.intent.category.LAUNCHER] flg=0x10200000 cmp=com.estrongs.android.pop/.view.FileExplorerActivity u=0} from pid 2176

这些日志都可以通过以下代码读取到,并且提供了解析包名的相应方法:

try {
    int tagCode = EventLog.getTagCode("am_proc_start");
    Collection<Event> output = new ArrayList<EventLog.Event>();
    EventLog.readEvents(new int[] { tagCode }, output);
    for (Event event : output) {
        // PID, UID, Process Name, Type, Component
        Object[] objects = (Object[]) event.getData();
        ComponentName componentName = ComponentName
                .unflattenFromString(objects[4].toString());
        String packageName = componentName.getPackageName();
        Log.d(TAG, "packageName=" + packageName);
    }
} catch (IOException e) {
    // TODO Auto-generated catch block
    e.printStackTrace();
}
PHPz

如果不使用三方的SDK的话,可以自己在启动一个Service的进程,然后进行扫描,隔几秒扫描一次,然后使用时长进行累加,具体的设置方法你可以自己想一下。

热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号