在我的應用程序中,我需要知道設備何時被鎖定(在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. 如何在sony smartwatch被鎖定的情況下顯示屏幕
- 2. 如何鎖定屏幕?
- 3. 自定義鎖定屏幕有時被股票鎖定屏幕覆蓋
- 4. 鎖定屏幕
- 5. 鎖定屏幕
- 6. 如何解鎖鎖定屏幕?
- 7. AppleScript的超時,當屏幕被鎖定
- 8. 鎖定MFC屏幕
- 9. 屏幕鎖定Contineously
- 10. UILocalNotification不顯示在鎖定屏幕上
- 11. 屏幕鎖定時顯示優惠券
- 12. 在鎖定屏幕上顯示通知
- 13. 在鎖定的Android屏幕上顯示
- 14. 在鎖定屏幕上顯示警報?
- 15. 喚醒屏幕並在鎖定屏幕上顯示對話框
- 16. 如何在Windows中鎖定屏幕?
- 17. 如何遠程鎖定iphone屏幕
- 18. UILocalNotification如何顯示應用程序圖標,當屏幕被鎖定
- 19. 如何從代碼(屏幕鎖定)鎖定android按鈕/手機?
- 20. 鎖定屏幕在10.6
- 21. 鎖定屏幕在Android中
- 22. onResume在電話屏幕被鎖定時被反覆呼叫
- 23. 如何在Android鎖定屏幕中顯示通知?
- 24. 如何在鎖定屏幕中顯示Textview?
- 25. 如何在鎖定屏幕控件上顯示搜索欄
- 26. 如何在應用程序啓動時顯示鎖定屏幕?
- 27. 如何使手機的屏幕在鎖定時顯示鬧鐘
- 28. 如何在屏幕鎖定時顯示活動?
- 29. iPhone,如何在鎖定屏幕上顯示更改對話框?
- 30. 關於屏幕鎖定和解鎖
看起來太棒了!我會馬上查看! – barmaley 2011-05-31 11:25:44
是的,它的工作原理!非常感謝! – barmaley 2011-05-31 15:42:53
@barmaley樂於幫助! – pandre 2011-05-31 17:37:50