Android开发:教你开发TVBox应用时使用遥控器组合快捷键
·
当我们在开发Android机顶盒,也就是TVBox应用的时候,我们可能会需要隐藏某个功能,或者隐藏某个应用,通过遥控器上按动组合快捷键来打开隐藏的功能或者应用。打个比方,可能“工厂测试FactoryTest”这个应用,我们并不需要把它列举出来,我们就可以把它隐藏,然后通过在“桌面Launcher”里面加入快捷键响应来打开这个应用,或采用组合键来进行某项快捷操作。本文以“左右左右”组合键打开系统设置界面为例。
注:如何隐藏自身app应用请戳:http://blog.csdn.net/xiong_it/article/details/44238283
转载请注明出处和链接:http://blog.csdn.net/xiong_it/article/details/44220825 ,谢谢!!
原理说明
每个按键按键按下onKeyDown的时候都有一个对应的keyCode,要想使用遥控器组合快捷键就需要连续按下多个按键,多个按键我们可以存入一个数组,在onKeyDown中把连续按下的按键值与我们预设好的按键组合进行对比,匹配的话就进入我们隐藏的功能或者应用中去。
按键匹配核心代码:
<pre name="code" class="java">public class CombinationKeyUtil { private static final String TAG = "CombinationKeyUtil"; private String[] mKeyStrings;//自定义的遥控器按键组合 private int index = 0; private int length = 0; public CombinationKeyUtil(String[] keyStrings) { mKeyStrings = keyStrings; length = mKeyStrings.length; } public boolean isMatch(int keyCode) { boolean isMatch = false; String keyCodeToString = KeyEvent.keyCodeToString(keyCode);//将按键值转为字符串 String keyCodeIndexString = mKeyStrings[index];//取出预设好的按键数组中的某一位字符串 if (keyCodeToString.equals(keyCodeIndexString)) {//如果按下的键值与预设的键值相同,继续对比下一个键值 index++; if (length == index) { isMatch = true; index = 0; } else { isMatch = false; } } else { index = 0; } Log.d(TAG, "isMatch? = "+isMatch); return isMatch; } }
在Activity的onKeyDown处对代码进行匹配
<pre name="code" class="java">public class MainActivity extends Activity { private static final String TAG = "MainActivity"; private CombinationKeyUtil keyUtil = null; /* 预设的组合快捷键数组:左右左右 */ private final String[] keyStrings = { "KEYCODE_DPAD_LEFT","KEYCODE_DPAD_RIGHT", "KEYCODE_DPAD_LEFT", "KEYCODE_DPAD_RIGHT" }; /* 系统设置的包名和类名 */ private final String packageName = "com.android.settings"; private final String className = "com.android.settings.Settings"; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); keyUtil = new CombinationKeyUtil(keyStrings); } @Override public boolean onKeyDown(int keyCode, KeyEvent event) { MatchCombinationKey(keyCode); return super.onKeyDown(keyCode, event); } /** * 按键匹配,正确就跳转到系统设置界面 * * @param keyCode 键值 */ private void MatchCombinationKey(int keyCode) { if (keyUtil.isMatch(keyCode)) {//如果按键为:左右左右,则组合快捷键匹配为true Log.d(TAG, "the keyCode is right!"); Intent intent = new Intent(); try { intent.setClassName(packageName, className); this.startActivity(intent); } catch (Exception e) { Log.e(TAG, "this app is not found:"+e.toString()); e.printStackTrace(); } } else { Log.d(TAG, "the keyCode is" + keyCode); } } }
此时,在Activity处按动你的按键:左右左右 即可发现你已经到达了“系统设置”。
Demo下载链接:http://download.csdn.net/detail/xiong_it/8495079,欢迎下载。
转载请注明出处和链接:http://blog.csdn.net/xiong_it/article/details/44220825 ,谢谢!!
更多推荐

所有评论(0)