自拍遙控器在Android中顯示爲藍牙鍵盤,對不對?或者作爲一般的HID(人機界面設備)。
如果是這種情況,請添加到活動的onCreate()
;
takeKeyEvents(true);
這說明in the documentation:
請求關鍵事件來這個活動。如果您的 活動沒有焦點的視圖,但該活動仍然需要處理關鍵事件的機會,請使用此選項。
覆蓋的onKeyUp()
(您的活動),並指定您希望使用一些動作的鍵:
@Override
public boolean onKeyUp(int keyCode, KeyEvent event) {
switch (keyCode) {
case KeyEvent.KEYCODE_MEDIA_PLAY_PAUSE:
Log.d(this.getClass().getName(), "KEYCODE_MEDIA_PLAY_PAUSE");
// Do something...
return true;
case KeyEvent.KEYCODE_MEDIA_PREVIOUS:
Log.d(this.getClass().getName(), "KEYCODE_MEDIA_PREVIOUS");
// Do something...
return true;
case KeyEvent.KEYCODE_MEDIA_NEXT:
Log.d(this.getClass().getName(), "KEYCODE_MEDIA_NEXT");
// Do something...
return true;
case KeyEvent.KEYCODE_VOLUME_DOWN:
Log.d(this.getClass().getName(), "KEYCODE_VOLUME_DOWN");
// Do something...
return true;
case KeyEvent.KEYCODE_VOLUME_UP:
Log.d(this.getClass().getName(), "KEYCODE_VOLUME_UP");
// Do something...
return true;
case KeyEvent.KEYCODE_ENTER:
Log.d(this.getClass().getName(), "KEYCODE_ENTER");
// Do something...
return true;
default:
return super.onKeyUp(keyCode, event);
}
}
的onKeyUp()
方法is explained:
時調用關鍵是發佈並且不在活動內部的任何視圖 處理。因此,例如,按鍵當光標 裏面一個TextView不會觸發事件(除非它是一個 導航到另一個對象),因爲TextView的處理自己的關鍵 印刷機。
的默認實現處理KEYCODE_BACK停止活動 並返回。
讓系統處理任何您不想捕獲的密鑰。這由default
塊完成。
只需檢查來自遙控器的鍵碼,並刪除不必要的情況。這些只是遙控器可能發送的鍵碼的一些候選項。
,當然任何適用於處理一般的鍵盤將適用於遠程爲好。 (假設它是一個HID,但它們通常是這樣。有按鈕的藍牙耳機是一個完全不同的故事呢。)
這將允許你使用遙控器在自己的應用程序。我不明白爲什麼應該涉及BroadcastReceivers或onClickListeners,但也許我錯過了這一點。
如果你想在後臺運行,併發送重要事件到其他應用程序的東西/重新映射遙控器上的按鍵與其它按鍵代碼觸發系統服務,那麼這也是一個不同的故事。
你好,你找到了這個任務的解決方案? –
@KadzhaevMarat對不起,我找不到任何解決方案 – Sid