AndroidTV開發中所有的遙控器按鍵監聽及注意事項,新增home鍵監聽
原文:Android TV開發中所有的遙控器按鍵監聽及注意事項,新增home鍵監聽
簡單記錄下android 盒子開發遙控器的監聽 ,希望能幫到新入門的朋友們
不多說,直接貼程式碼
public class MainActivity extends Activity {
private String TAG="key";
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
}
@Override
public boolean onKeyDown(int keyCode, KeyEvent event) {
switch (keyCode) {
case KeyEvent.KEYCODE_ENTER: //確定鍵enter
case KeyEvent.KEYCODE_DPAD_CENTER:
Log.d(TAG,"enter--->");
break;
case KeyEvent.KEYCODE_BACK: //返回鍵
Log.d(TAG,"back--->");
return true; //這裡由於break會退出,所以我們自己要處理掉 不返回上一層
case KeyEvent.KEYCODE_SETTINGS: //設定鍵
Log.d(TAG,"setting--->");
break;
case KeyEvent.KEYCODE_DPAD_DOWN: //向下鍵
/* 實際開發中有時候會觸發兩次,所以要判斷一下按下時觸發 ,鬆開按鍵時不觸發
* exp:KeyEvent.ACTION_UP
*/
if (event.getAction() == KeyEvent.ACTION_DOWN){
Log.d(TAG,"down--->");
}
break;
case KeyEvent.KEYCODE_DPAD_UP: //向上鍵
Log.d(TAG,"up--->");
break;
case KeyEvent.KEYCODE_0: //數字鍵0
Log.d(TAG,"0--->");
break;
case KeyEvent.KEYCODE_DPAD_LEFT: //向左鍵
Log.d(TAG,"left--->");
break;
case KeyEvent.KEYCODE_DPAD_RIGHT: //向右鍵
Log.d(TAG,"right--->");
break;
case KeyEvent.KEYCODE_INFO: //info鍵
Log.d(TAG,"info--->");
break;
case KeyEvent.KEYCODE_PAGE_DOWN: //向上翻頁鍵
case KeyEvent.KEYCODE_MEDIA_NEXT:
Log.d(TAG,"page down--->");
break;
case KeyEvent.KEYCODE_PAGE_UP: //向下翻頁鍵
case KeyEvent.KEYCODE_MEDIA_PREVIOUS:
Log.d(TAG,"page up--->");
break;
case KeyEvent.KEYCODE_VOLUME_UP: //調大聲音鍵
Log.d(TAG,"voice up--->");
break;
case KeyEvent.KEYCODE_VOLUME_DOWN: //降低聲音鍵
Log.d(TAG,"voice down--->");
break;
case KeyEvent.KEYCODE_VOLUME_MUTE: //禁用聲音
Log.d(TAG,"voice mute--->");
break;
break;
default:
break;
}
return super.onKeyDown(keyCode, event);
}
}
效果如下:
home鍵的監聽要監聽廣播:
class HomeRecaiver extends BroadcastReceiver{
@Override
public void onReceive(Context context, Intent intent) {
String action = intent.getAction();
if(action.equals(Intent.ACTION_CLOSE_SYSTEM_DIALOGS)){
String reason = intent.getStringExtra(SYSTEM_DIALOG_REASON_KEY);
if(SYSTEM_DIALOG_REASON_HOME_KEY.equals(reason)){
Toast.makeText(MainActivity.this,"home鍵觸發",0).show();
Log.d(TAG, "home鍵觸發");
}
}
}
}
在oncreate()註冊廣播
public final String SYSTEM_DIALOG_REASON_KEY = "reason";
public final String SYSTEM_DIALOG_REASON_HOME_KEY = "homekey";
/**
* 註冊廣播
*/
private void initReceiver() {
homeReceiver = new HomeRecaiver();
IntentFilter filter = new IntentFilter(Intent.ACTION_CLOSE_SYSTEM_DIALOGS);
registerReceiver(homeReceiver, filter);
}
退出登出廣播
@Override
protected void onDestroy() {
super.onDestroy();
if(homeReceiver!=null){
unregisterReceiver(homeReceiver);
}
}
相關文章
- Android Home鍵、鎖屏鍵監聽Android
- 監聽鍵盤事件事件
- 安卓使用物理鍵監聽器安卓
- python pynput監聽鍵盤Python
- flutter中監聽鍵盤Flutter
- java鍵盤監聽之視窗監聽的實現Java
- android PopupWindow監聽返回鍵無效Android
- Echarts 監聽滑鼠右鍵或者雙擊Echarts
- web app 中物理返回鍵的監聽WebAPP
- Android開發之監聽軟鍵盤狀態(彈出收回)Android
- vue的監聽鍵盤事件的快捷方法Vue事件
- Android監聽軟鍵盤收起與彈出Android
- 監聽 watch props物件屬性監聽 或深度監聽物件
- H5頁面監聽Android物理返回鍵H5Android
- h5監聽手機鍵盤彈起H5
- JS監聽手機物理返回鍵(及IOS微信端的bug)JSiOS
- JMeter—監聽器(十二)JMeter
- Spring Data JPA中事務監聽器TransactionExecutionListenerSpring
- Android 監聽鍵盤狀態變化,並獲取鍵盤高度Android
- jfinal中如何使用過濾器監控Druid監聽SQL執行?過濾器UISQL
- 事件和事件監聽器事件
- javaWeb中的監聽器JavaWeb
- 如何移除事件監聽器事件
- 監聽器和過濾器過濾器
- watch監聽
- oracle監聽不到例項服務Oracle
- uniapp打包成apk,監聽安卓手機的返回鍵APPAPK安卓
- spring boot 新增自定義監聽器、過濾器、攔截器Spring Boot過濾器
- Vue入門指南-04 事件機制和事件/按鍵修飾符和過濾器及監聽屬性(快速上手vue)Vue事件過濾器
- 一鍵配置開源伺服器監控工具 NetData伺服器
- Springboot中自定義監聽器Spring Boot
- day25-Listener監聽器
- jmeter監聽器(Transactions per Second)JMeter
- 【spring原始碼】十二、監聽器Spring原始碼
- 使用 vue 例項更好的監聽事件Vue事件
- 基於laravel的事件監聽例項Laravel事件
- oracle之 單例項監聽修改埠Oracle單例
- 監聽滑鼠事件事件