我想在后台处理Androids应用程序工作。我已经读过,我必须使用服务。 在这个应用程序中,我需要知道屏幕何时被锁定以及何时再次解锁。每次发生这种情况,我都必须采取一些行动。
对于活动,我看到我们有onPause和onRestart这个,但我需要知道屏幕何时关闭以及何时在服务中打开。如何从服务内部检索此信息。
答案 0 :(得分:1)
打开/关闭屏幕会产生系统事件。您必须收听这些广播并捕获它们。将此添加到您的清单:
<receiver android:name=".ScreenLockBroadcastReceiver">
<intent-filter>
<action android:name="android.intent.action.USER_PRESENT" />
<action android:name="android.intent.action.ACTION_SHUTDOWN" />
</intent-filter>
</receiver>
然后注册广播接收器以在服务中捕获它。
public class ScreenLockBroadcastReceiver extends BroadcastReceiver {
@Override
public void onReceive(Context arg0, Intent intent) {
if (intent.getAction().equals(Intent.ACTION_USER_PRESENT)) {
// do stuff
}
}
}
答案 1 :(得分:0)
您可以使用此
KeyguardManager keyguardManager = (KeyguardManager)
context.getSystemService(Context.KEYGUARD_SERVICE);
if( keyguardManager.inKeyguardRestrictedInputMode()) {
//it is locked
} else {
//it is not locked
}
希望这有帮助。
答案 2 :(得分:0)
在清单
中的接收器标记中使用此操作 <action android:name="android.intent.action.SCREEN_ON" />
<action android:name="android.intent.action.SCREEN_OFF" />
答案 3 :(得分:0)
我想在后台创建android应用程序,我读过我必须使用这些服务。
是的,可能你必须使用服务来检查屏幕是否仍然开启或关闭。例如,在onCreate
类的Services
中。
IntentFilter intentFilter = new IntentFilter(Intent.ACTION_SCREEN_ON);
filter.addAction(Intent.ACTION_SCREEN_OFF);
BroadcastReceiver broadcast = new MyBroadcastReciverClass(); //or
registerReceiver(broadcast , intentFilter );
实际上:
Intent.ACTION_SCREEN_OFF
或
Intent.ACTION_SCREEN_ON
你的BroadcastReceiver
中还有2件主要内容。例如,在onReceive
方法中:
if (intent.getAction().equals(Intent.ACTION_SCREEN_OFF)) {
// CODE HERE FOR SCREEN OFF
} else if (intent.getAction().equals(Intent.ACTION_SCREEN_ON)) {
// CODE HERE FOR SCREEN ON
}
有关更详细的说明,请参阅本文:https://thinkandroid.wordpress.com/2010/01/24/handling-screen-off-and-screen-on-intents/