如何在Android上跟踪“屏幕开启”时间?

前端之家收集整理的这篇文章主要介绍了如何在Android上跟踪“屏幕开启”时间?前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
@H_502_0@
我正在尝试用我的第一个应用程序(理论上)做一些简单的事情,但我需要一些帮助才能开始.我想构建一个应用程序,告诉我今天Nexus 4上的屏幕有多长时间了.

Android显示自上次通过设置>以来屏幕已经显示的@R_404_281@电池>屏幕,但我不知道如何解析这些数据,或者如何将其限制在当天.
到目前为止,我的研究表明,batterystats.bin涉及上面概述的屏幕跟踪,我可以使用ACTION_SCREEN_ON和ACTION_SCREEN_OFF,但我不确定这是否正是我正在寻找的.

有任何想法吗?

解决方法

我知道这是一个老问题,但希望这会对某人有所帮助.

在我的服务中,我监听SCREEN_ON / SCREEN_OFF操作并获取两次之间的差异并保存到onDestroy回调中的sharedpreferences.

BroadcastReceiver mybroadcast = new BroadcastReceiver() {

    @Override
    public void onReceive(Context context,Intent intent) {
        Log.i("[BroadcastReceiver]","MyReceiver");

        if(intent.getAction().equals(Intent.ACTION_SCREEN_ON)){
            startTimer = System.currentTimeMillis();
        }
        else if(intent.getAction().equals(Intent.ACTION_SCREEN_OFF)){
            endTimer = System.currentTimeMillis();
            screenOnTime = endTimer - startTimer;

           if(screenOnTime < TIME_ERROR) {
               times.add(screenOnTime);
           }

        }

    }
};

该服务在启动时和更换包时启动(我发现它对调试很有帮助).

public class BootReceiver extends BroadcastReceiver {
    @Override
    public void onReceive(Context context,Intent intent) {
        Intent i = new Intent(context,ScreenOnService.class);
        context.startService(i);
    }
}

这是我对广播接收器的表现

<receiver android:name=".BootReceiver">
            <intent-filter>
                <action android:name="android.intent.action.BOOT_COMPLETED" />
            </intent-filter>
            <intent-filter>
                <action android:name="android.intent.action.PACKAGE_REPLACED" />
                <data android:scheme="package" android:path="com.application.test" />
            </intent-filter>
        </receiver>

猜你在找的Android相关文章