如何开发可以跟踪所有其他应用程序使用情况的应用程序?

问题描述 投票:-2回答:1

我需要能够为5.0之前的Android设备做到这一点。有人能帮助我如何开始这样做吗?我搜索了Stack Overflow以寻找可能的解决方案,最有希望的是从工作应用程序中提供了大量代码,但在修复了一些错误以便应用程序不会崩溃,当服务运行时,只显示一个空白的白色屏幕没有别的,所以我决定放弃它。有没有可用的资源来帮助我实现这个目标?谢谢!

android android-service usage-statistics
1个回答
1
投票

要在5.0之前获得当前正在运行的应用程序,您可以轮询ActivityManager

ActivityManager am = (ActivityManager) context.getSystemService(Context.ACTIVITY_SERVICE);
List<ActivityManager.RunningTaskInfo> tasks = am.getRunningTasks(Integer.MAX_VALUE);
ActivityManager.RunningTaskInfo task = tasks.get(0);

String pkg = task.topActivity.getPackageName();

您必须记录此信息,以便您衡量在应用上花费的时间。

现在您可能希望使用计时器定期执行此操作:

new Timer().schedule(new TimerTask() {
    @Override
    public void run() {
        // Poll ActivityManager
    }
}, 250, 250); // Runs every 250 ms.

顺便说一句,ScheduledExecutorService会更好,但是Timer会做。

现在您想在服务中创建它:

public class MyService extends Service {

    @Override
    public void onCreate() {
        // Create TimerTask here
    }

    @Override
    public IBinder onBind(Intent intent) {
        return null;
    }
}

您必须在清单中注册此服务:

<service android:name=".MyService" />

最后,您可以在您的活动中明确地启动它:

startService(new Intent(context, ServiceSystemControl.class));

这就是你所需要的!您需要跟踪顶级应用程序,并在设备上的所有内容上花费一些运行时间。

为了改善这一点,您可以使服务注册为持久通知,因此系统在内存不足时不会将其删除。

© www.soinside.com 2019 - 2024. All rights reserved.