Android Service检查用户屏幕是否开启

时间:2017-03-15 10:45:50

标签: java android analytics

有没有办法创建一个在Android背景上永远运行的服务,以检查他们的屏幕是打开还是关闭等?

我即将创建分析,因此我需要知道用户何时开启或关闭其屏幕。

谢谢,我将感谢所有的输入

3 个答案:

答案 0 :(得分:1)

您可以使用Android广播接收器来开启和关闭屏幕。 这是一个很好的例子

https://thinkandroid.wordpress.com/2010/01/24/handling-screen-off-and-screen-on-intents/

您也可以关注此主题 https://stackoverflow.com/a/9478013/2784838

答案 1 :(得分:1)

您需要创建广播接收器并管理屏幕开启或关闭状态。

     Declare receiver in manifest:    
     <receiver android:name=".DeviceWakeUpReceiver" />


    public class DeviceWakeUpReceiver extends BroadcastReceiver {
        private static final String TAG = "DeviceWakeUpService";
        @Override
        public void onReceive(Context context, Intent intent) {
            Log.d(TAG, "onReceive() called");
            if (intent.getAction().equals(Intent.ACTION_SCREEN_OFF)) {
                //End service when user phone screen off

            } else if (intent.getAction().equals(Intent.ACTION_SCREEN_ON)) {
                //Start service when user phone screen on

            }
        }
    }

答案 2 :(得分:0)

您无法使用BroadcastReceiver接收屏幕关闭/开启事件。 编写一个通过启动完成侦听器启动的intent服务,并注册Intent.ACTION_SCREEN_OFF和Intent.ACTION_SCREEN_ON。

IntentFilter filter = new IntentFilter(Intent.ACTION_SCREEN_ON);
IntentFilter filter = new IntentFilter(Intent.ACTION_SCREEN_OFF);
registerReceiver(new ScreenOffOnReceiver(), filter);

class ScreenOffOnReiver extends BroadcastReceiver {
    public void onReceive(Context context, Intent intent) {
         if (intent.getAction().equals(Intent.ACTION_SCREEN_OFF)) {
             // Screen OFF
         else if (intent.getAction().equals(Intent.ACTION_SCREEN_ON)) {
             // Screen ON
         }
    }
}