Android:TV设置遥控器组合键

 这个其实很简单,就是获取用户的按键操作,按一次,我放到ArrayList,点击菜单的时候,我比对一下顺序是否正确

以下组合键顺序,上  -->  下  -->   左  -->  右  --->  菜单,跳转至设置主页


    private ArrayList<Integer> key_composite = new ArrayList<Integer>();

    //焦点监听
    @Override
    public boolean onKeyDown(int keyCode, KeyEvent event) {
        //初始化按键顺序
        ArrayList<Integer> composite = new ArrayList<Integer>(Arrays.asList(KeyEvent.KEYCODE_DPAD_UP, KeyEvent.KEYCODE_DPAD_DOWN, KeyEvent.KEYCODE_DPAD_LEFT, KeyEvent.KEYCODE_DPAD_RIGHT, KeyEvent.KEYCODE_MENU));
//遍历一下按键的,这个是给你调试的,不需要删掉就行
//        for (Integer tmp_composite : composite) {
//            Log.e("tmp_composite:", tmp_composite.toString());
//        }
        if (keyCode == KeyEvent.KEYCODE_DPAD_UP) {
            //按上键的时候,清除key_composite,用户此时可能要开始搞事情了
            key_composite.clear();
            Log.e("KEYCODE_DPAD_UP:", String.valueOf(KeyEvent.KEYCODE_DPAD_UP));
            //触发一次
            key_composite.add(KeyEvent.KEYCODE_DPAD_UP);
            return false;//写false的意思是不要拦截
        }
        if (keyCode == KeyEvent.KEYCODE_DPAD_DOWN) {
            Log.e("KEYCODE_DPAD_DOWN:", String.valueOf(KeyEvent.KEYCODE_DPAD_DOWN));
            //触发一次
            key_composite.add(KeyEvent.KEYCODE_DPAD_DOWN);
            return false;
        }
        if (keyCode == KeyEvent.KEYCODE_DPAD_LEFT) {
            Log.e("KEYCODE_DPAD_LEFT:", String.valueOf(KeyEvent.KEYCODE_DPAD_LEFT));
            //触发一次
            key_composite.add(KeyEvent.KEYCODE_DPAD_LEFT);
            return false;
        }
        if (keyCode == KeyEvent.KEYCODE_DPAD_RIGHT) {
            Log.e("KEYCODE_DPAD_RIGHT:", String.valueOf(KeyEvent.KEYCODE_DPAD_RIGHT));
            //触发一次
            key_composite.add(KeyEvent.KEYCODE_DPAD_RIGHT);
            return false;
        }
        if (keyCode == KeyEvent.KEYCODE_MENU) {
            Log.e("KEYCODE_MENU:", String.valueOf(KeyEvent.KEYCODE_MENU));
            //触发一次
            key_composite.add(KeyEvent.KEYCODE_MENU);
            for (Integer tmp_key_composite : key_composite) {
                Log.e("tmp_key_composite:", tmp_key_composite.toString());
            }
            if (composite.equals(key_composite)) {
                //如果相同,就
                Intent intent = new Intent(Settings.ACTION_SETTINGS);//跳转系统设置界面
                startActivity(intent);
            } else {
                key_composite.clear();
            }
            return false;
        }
        //matrix版本返回按键处理
        if (keyCode == KeyEvent.KEYCODE_BACK) {
            Intent intent = getIntent();
            finish();
            startActivity(intent);
            key_composite.clear();

            return true;
        }
        return super.onKeyDown(keyCode, event);
    }

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Wenlong Yang

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值