优秀的编程知识分享平台

网站首页 > 技术文章 正文

「安卓开发、鸿蒙开发」安卓模拟按键事件

nanyue 2024-08-31 23:54:21 技术文章 8 ℃

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、使用需要相关权限。

Tags:

最近发表
标签列表