1、需要在manifest 里面增加android:sharedUserId=“android.uid.system”
加上权限
必须是系统级app或者Root权限
2、核心代码
public static void simulateKey(int KeyCode) {
try {
if (mInstrumentation == null) {
// KeyEvent.KEYCODE_TV_INPUT_HDMI_1
mInstrumentation = new Instrumentation();
}
mInstrumentation.sendKeyDownUpSync(KeyCode);
}catch(Exception ex) {
ex.printStackTrace();
}
}
3、调用代码
// 不能在主UI线程执行
new Thread(new Runnable() {
@Override
public void run() {
try {
// 模拟回车按键
Instrumentation inst = new Instrumentation();
inst.sendKeyDownUpSync(KeyEvent.KEYCODE_ENTER); //传入不同的keycode就ok了
// 模拟直接切换到HDMI 1
TVKeyPadControlUtil.simulateKey(KeyEvent.KEYCODE_TV_INPUT_HDMI_1);
}catch(Exception ex) {
ex.printStackTrace();
}
}
}).start();
4、用Runtime模拟按键
/**
* 用Runtime模拟按键操作
*
* @param keyCode
* 按键事件(KeyEvent)的按键值
*/
public static void sendKeyCode(int keyCode) {
try {
String keyCommand = "input keyevent " + keyCode;
Runtime runtime = Runtime.getRuntime();
Process proc = runtime.exec(keyCommand);
} catch (Exception e) {
e.printStackTrace();
System.out.println("sendKeyCode异常:"+e.getMessage());
}
}
5、使用需要相关权限。