Android开发:教你开发TVBox应用时使用遥控器组合快捷键

来源:互联网 发布:投资淘宝众筹怎么赚钱 编辑:程序博客网 时间:2024/06/10 09:21

当我们在开发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";@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);keyUtil = new CombinationKeyUtil(keyStrings);}@Overridepublic boolean onKeyDown(int keyCode, KeyEvent event) {MatchCombinationKey(keyCode);return super.onKeyDown(keyCode, event);}/** * 按键匹配,正确就跳转到系统设置界面 *  * @param keyCode 键值 */private void MatchCombinationKey(int keyCode) {if (keyUtil.isMatch(keyCode)) {//如果按键为:左右左右,则组合快捷键匹配为trueLog.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 ,谢谢!!



1 0
原创粉丝点击