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
- Android开发:教你开发TVBox应用时使用遥控器组合快捷键
- Android 开发应用时的简单IO流使用
- 开发jpa应用时异常
- 开发jpa应用时异常
- Android开发社交软件类应用时的若干问题
- Eclipse开发Android应用时遇到的问题以及解决方法
- Intellij Idea 开发android应用时,获取签名SHA1值
- 开发android应用时,更换应用图标后没生效
- Android开发:TVBox智能机顶盒开发实用技巧分享
- Android遥控器开发
- 用NetBeans开发J2ME应用时,解决注释、整理导入快捷键失效问题
- MySQL 开发应用时的超时问题
- weblogic开发应用时的常见问题总结
- Android开发launcher、setting类应用时调用Android系统隐藏api的方法
- 使用Xcode开发phoneGap应用时使用console.log()输出日志。
- 解决开发android应用时虚拟机启动、运行较慢的问题
- android开发,Eclipse安装应用时,提示Installation failed due to invalid URI
- 解决开发android应用时虚拟机启动、运行较慢的问题
- 哪种实木家具好
- 输入一个非负整数,返回组成它的数字之和
- MFC调用外部EXE文件
- 算法题集锦
- Xcode6.2正式版 下载地址(网盘)
- Android开发:教你开发TVBox应用时使用遥控器组合快捷键
- 使用ASI所需要的系统库
- HTTP协议
- 编写一个函数实现n^k,使用递归实现
- android -- eclipse快捷键与技巧大全
- 将虚拟机导入到AWS
- 医学图像处理工具包ITK
- Python 查找指定文件夹下的所有路径
- JUnit4详解