在我的應用程序中,我需要知道設備何時被鎖定(在HTC上它看起來像短按「電源」按鈕)。所以問題是:設備被鎖定時觸發哪個事件?或設備將要睡覺?如何揭示該屏幕被鎖定?
9
A
回答
5
您應該擴展BroadcastReceiver
和實施onReceive
,像這樣:
public class YourBroadcastReceiver extends BroadcastReceiver {
@Override
public void onReceive(Context context, Intent intent) {
if (Intent.ACTION_SCREEN_OFF.equalsIgnoreCase(intent.getAction())) {
//screen has been switched off!
}
}
}
然後你只需要註冊登記,當屏幕關閉時,你會開始接收事件:
IntentFilter filter = new IntentFilter(Intent.ACTION_SCREEN_ON);
filter.addAction(Intent.ACTION_SCREEN_OFF);
appBroadcastReceiver = new AppBroadcastReceiver(yourActivity);
registerReceiver(appBroadcastReceiver, filter);
0
除了上述答案之外,如果您希望在應用處於前景時觸發某些操作:
您可以使用事件稱爲的onResume()觸發自己的功能,當你的應用程序需要的焦點從之前休息狀態,也就是說,如果您的應用程序在後臺(暫停/最小化......)
protected void onResume()
{
super.onResume();
//call user-defined function here
}
3
有一個更好的辦法:
KeyguardManager myKM = (KeyguardManager) context.getSystemService(Context.KEYGUARD_SERVICE);
if(myKM.inKeyguardRestrictedInputMode()) {
//it is locked
} else {
//it is not locked
}
+0
你嘗試過isDeviceLocked爲Android 5.1 http://developer.android.com/reference/android/app/KeyguardManager.html#isDeviceLocked()? – 2015-04-03 10:05:21
相關問題
- 1. 在鎖定屏幕上切換活動顯示鎖定屏幕
- 2. 如何在sony smartwatch被鎖定的情況下顯示屏幕
- 3. 如何鎖定屏幕?
- 4. 如何鎖定屏幕Android
- 5. 鎖定屏幕
- 6. 鎖定屏幕
- 7. 自定義鎖定屏幕有時被股票鎖定屏幕覆蓋
- 8. 如何解鎖鎖定屏幕?
- 9. TimerTask的暫停時,屏幕被鎖定
- 10. 檢查Windows的屏幕被鎖定
- 11. AppleScript的超時,當屏幕被鎖定
- 12. 屏幕鎖定和解鎖
- 13. 鎖定MFC屏幕
- 14. vb6鎖定屏幕
- 15. 屏幕鎖定Contineously
- 16. 鎖定屏幕上的Android鎖定屏幕/媒體控件
- 17. 在鎖定屏幕上顯示通知
- 18. 在鎖定屏幕上顯示警報?
- 19. 鎖定提示到屏幕底部
- 20. 在iPhone鎖定屏幕上顯示CFUserNotification
- 21. 在鎖定屏幕上顯示文字
- 22. 屏幕鎖定時顯示優惠券
- 23. 在鎖定屏幕上顯示Dialogfragment
- 24. 在鎖定的Android屏幕上顯示
- 25. AlertView在鎖定屏幕中顯示?
- 26. 在鎖定屏幕上顯示通知
- 27. 鎖定電腦並顯示屏幕
- 28. UILocalNotification不顯示在鎖定屏幕上
- 29. 自定義鎖定屏幕
- 30. 如何遠程鎖定iphone屏幕
看起來太棒了!我會馬上查看! – barmaley 2011-05-31 11:25:44
是的,它的工作原理!非常感謝! – barmaley 2011-05-31 15:42:53
@barmaley樂於幫助! – pandre 2011-05-31 17:37:50