1

我正在尝试创建一个具有持续运行服务的应用程序,该服务将在用户每次解锁或将手机状态从屏幕关闭更改为屏幕打开时记录并显示给用户。如果不通过 PC 使用 Log cat,这可能吗?

4

1 回答 1

1

是的,您可以使用广播接收器来做到这一点。Android 系统总是发送指定更改的广播。您可以使用广播接收器处理此广播。

例子:

我们将创建一个新的广播接收器来处理屏幕开启和屏幕关闭状态:

    public class PhoneStateBroadcastReceiver extends BroadcastReceiver {
      @Override
      public void onReceive(Context context, Intent intent) {
        //we will handle here the activities which will tell us that
        // the screen state has changed
        if(intent.getAction().equals(Intent.ACTION_SCREEN_OFF)){
           //write log that the screen is off
        }else if(intent.getAction().equals(Intent.ACTION_SCREEN_ON)){
           //write log that the screen is on
        }
      }
   }

您只需在 Android Manifest.xml 文件中声明此 BroadcastReceiver:

 <receiver android:name="yourpackage.PhoneStateBroadcastReceiver">
        <intent-filter>
        </intent-filter>
 </receiver>

之后,您应该在您的 Service onCreate 方法上启动您的 PhoneStateBroadcastReceiver:

//...
public void onCreate(){
   IntentFilter filter = new IntentFilter();
   filter.addAction(Intent.ACTION_SCREEN_OFF);
   filter.addAction(Intent.ACTION_SCREEN_ON);

   PhoneStateBroadcastReceiver pSReciever = new PhoneStateBroadcastReceiver();
   registerReceiver(pSReciever, filter);
}
于 2015-05-12T22:43:42.007 回答