Android TV开发中所有的遥控器按键监听及注意事项,新增home键监听

Posted lonelyxmas

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Android TV开发中所有的遥控器按键监听及注意事项,新增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 TV开发中所有的遥控器按键监听及注意事项,新增home键监听的主要内容,如果未能解决你的问题,请参考以下文章

Android TV按键焦点原理浅谈

Android TV开发焦点移动源码分析

如何在 Android TV 应用上禁用 Playback ControlGlue?

Android TV-电视开发知识点速览

Android代码中发送Keycode按键

Android代码中发送Keycode按键