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 ,谢谢!!



你可能感兴趣的:(android,快捷键,组合键,Android盒子遥控器快捷键,TVBox,TVBox遥控器)