Android 模拟键盘输入 - ythy/blog GitHub Wiki

重点

  1. adb shell input text 命令

  2. if you want to send embedded spaces with the input command, use %s
    adb shell input text 'this%sis%san%sexample'
    will yield
    this is an example

  3. 输入text 手机实测有等待及延时,不能立即输入其他shell命令,所以需要设置合理的间隔时间。

实例

	private void startMoyao(){
		mHackThreadCount = Integer.MAX_VALUE;
		final int duration = 3;
		new Thread(new Runnable() {
			@Override
			public void run() {
				int turn = duration;
				sendKeyEventCode("chen gc");
				sendKeyEventCode("e");
				sendKeyEventCode("e");
				sendKeyEventCode("n");
				sendKeyEventCode("xiuxi beg", 2000);
				while(mHackThreadCount-- > 0){
					sendKeyEventCode("ask ping about job");
					sendKeyEventCode("moyao", 8000);
					if(--turn == 0){
						turn = duration;
						sendKeyEventCode("xiuxi beg", 2000);
					}
				}
			}
		}
		).start();
	}


	private void sendKeyEventCode(String input, int delay){
		sendKeyEventCodeAct(input, delay);
	}

	private void sendKeyEventCode(String input){
		sendKeyEventCodeAct(input, 500);
	}

	private void sendKeyEventCodeAct(String input, int delay){
		if(mHackThreadCount <= 0)
			return;
		input = input.replaceAll("\\s", "%s");
		try {
			execShellCmd("input text " + input);
			Thread.sleep( input.length() * 150 > 1500 ? 1500 :  input.length() * 150);
			execShellCmd("input keyevent 66" );
			Thread.sleep(delay);
		} catch (InterruptedException e) {
			e.printStackTrace();
		}
	}

execShellCmd 方法在前一篇wiki有介绍