1. 程式人生 > >Android TV開發中所有的遙控器按鍵監聽及註意事項,新增home鍵監聽

Android TV開發中所有的遙控器按鍵監聽及註意事項,新增home鍵監聽

char 技術分享 ces num block eas article 分享 iou

原文: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 TV開發中所有的遙控器按鍵監聽及註意事項,新增home鍵監聽