2015-04-23 91 views
2

我正試圖寫一個小應用程序,它會捕獲KeyEvent的後退按鈕被按下,當屏幕被鎖定時
我看到您可以輕鬆覆蓋onKeyDownonBackPressed以捕捉此事件,但只有在活動正在運行時才能使用。
據我所知,在一些android手機上,如果不是所有的手機,操作系統都不會在屏幕鎖定時聽到背面和菜單按鈕。當屏幕鎖定時捕獲返回按鈕按下事件

編輯
我看了幾個關於捕捉用戶按下音量按鈕的事件的帖子,和所有的說,他們是不是一種方法,這樣做的時候,屏幕是關閉的。
他們有理由相信案件是關於後退按鈕的變化嗎?

+0

所以首先你需要找到鎖定或不在服務中的屏幕 – Sree

+0

當屏幕關閉時,大多數手機沒有活動後退按鈕。他們有屏幕導航(導航欄) –

回答

3

1)與廣播接收器用於Intent.ACTION_SCREEN_OFF和Intent.ACTION_SCREEN_ON

2)檢查註冊如果屏幕是使用鍵盤鎖管理器等鎖定:

KeyguardManager kManager = (KeyguardManager) getSystemService(Context.KEYGUARD_SERVICE); 
boolean isLocked = kManager.inKeyguardRestrictedInputMode(); 

使用或不使用廣播接收器,你可以檢查,如:

KeyguardManager kManager = (KeyguardManager) context.getSystemService(Context.KEYGUARD_SERVICE); 
if(kManager .inKeyguardRestrictedInputMode()) { 
//locked 
} else { 
//not locked 
} 

下一頁檢查後退按鈕按下時,如果屏幕被鎖定。

@Override 
public boolean onKeyDown(int keyCode, KeyEvent event) { 
if ((keyCode == KeyEvent.KEYCODE_BACK)) { 
    //Back Button is pressed 
} 
return super.onKeyDown(keyCode, event); 
} 
+0

請看我編輯我的問題。 – Presen