How do I track “screen on” time on Android?

前端 未结 3 1608
面向向阳花
面向向阳花 2020-12-16 04:24

I\'m trying to do something (theoretically) simple with my first app, but I need some help getting started. I\'d like to build an app that tells me how long the screen on my

3条回答
  •  旧巷少年郎
    2020-12-16 04:58

    Better implement as a BroadcastReceiver:

    public class ScreenTimeBroadcastReceiver extends BroadcastReceiver {
    
        private long startTimer;
        private long endTimer;
        private long screenOnTimeSingle;
        private long screenOnTime;
        private final long TIME_ERROR = 1000;
    
        public void onReceive(Context context, Intent intent) {
            Log.i(P.TAG, "ScreenTimeService onReceive");
    
            if(intent.getAction().equals(Intent.ACTION_SCREEN_ON)){
                startTimer = System.currentTimeMillis();
            }
            else if(intent.getAction().equals(Intent.ACTION_SCREEN_OFF)){
                endTimer = System.currentTimeMillis();
                screenOnTimeSingle = endTimer - startTimer;
    
                if(screenOnTimeSingle < TIME_ERROR) {
                    screenOnTime += screenOnTime;
                }
    
            }
        }
    }
    

    You will need to register the receiver like this (in onCreate activity for example):

        screenTimeBroadcastReceiver = new ScreenTimeBroadcastReceiver();
        IntentFilter lockFilter = new IntentFilter();
        lockFilter.addAction(Intent.ACTION_SCREEN_ON);
        lockFilter.addAction(Intent.ACTION_SCREEN_OFF);
        registerReceiver(screenTimeBroadcastReceiver, lockFilter);
    

提交回复
热议问题