Android TV中的组合按键应用

/

软硬件环境

  • OTT Box 5.1.1
  • Android studio 3.0.1

前言

在做Android TV时,经常会将一些对系统或者是app的设置独立出来,用一种相对隐秘的方法叫出,供工程部署人员使用,即所谓的工程菜单。

实现

通过在dispatchKeyEvent方法中拦截键值,以组合键*0#为例,当系统接收到这个组合键时,开启另一个app,函数doStartApplicationWithPackageName就是用来做这个的,换成你想实现的方法就成。

  1. @Override
  2. public boolean dispatchKeyEvent(KeyEvent event) {
  3. switch (event.getKeyCode()) {
  4. case KeyEvent.KEYCODE_STAR:
  5. keyStarTime = System.currentTimeMillis();
  6. break;
  7. case KeyEvent.KEYCODE_0:
  8. keyZeroTime = System.currentTimeMillis();
  9. break;
  10. case KeyEvent.KEYCODE_POUND:
  11. keyPoundTime = System.currentTimeMillis();
  12. break;
  13. }
  14. checkCombinationKey(keyStarTime, keyZeroTime, keyPoundTime);
  15. return super.dispatchKeyEvent(event);
  16. }
  17. private void checkCombinationKey(long keystar, long keyZero, long keyPound) {
  18. //组合键 *0# 打开系统设置app
  19. long currTime = System.currentTimeMillis();
  20. if ((keystar <= keyZero) && (keyZero <= keyPound) && (currTime - keystar < 2000) && (currTime - keyZero < 2000) && (currTime - keyPound < 2000)) {
  21. doStartApplicationWithPackageName(settingPackageName);
  22. }
  23. }

参考资料

转载请注明作者和出处,并添加本页链接。
原文链接:http://xugaoxiang.com/post/109

给我留言