http://blog.youkuaiyun.com/webwalker/article/details/8064343
上面是搜索到的方法,值得看看,下面是我在做悬浮球时模拟截屏,和锁屏的功能,感谢李工:
private void sendDownEvents(int keyCode) {
final long token = Binder.clearCallingIdentity();
// Inject down.
final long downTime = SystemClock.uptimeMillis();
KeyEvent down = KeyEvent.obtain(downTime, downTime, KeyEvent.ACTION_DOWN, keyCode, 0, 0,
KeyCharacterMap.VIRTUAL_KEYBOARD, 0, KeyEvent.FLAG_FROM_SYSTEM,
InputDevice.SOURCE_KEYBOARD, null);
InputManager.getInstance().injectInputEvent(down,
InputManager.INJECT_INPUT_EVENT_MODE_ASYNC);
down.recycle();
Binder.restoreCallingIdentity(token);
}
private void sendUpEvents(int keyCode) {
final long token = Binder.clearCallingIdentity();
// Inject down.
final long downTime = SystemClock.uptimeMillis();
KeyEvent up = KeyEvent.obtain(downTime, downTime, KeyEvent.ACTION_UP, keyCode, 0, 0,
KeyCharacterMap.VIRTUAL_KEYBOARD, 0, KeyEvent.FLAG_FROM_SYSTEM,
InputDevice.SOURCE_KEYBOARD, null);
InputManager.getInstance().injectInputEvent(up,
InputManager.INJECT_INPUT_EVENT_MODE_ASYNC);
up.recycle();
Binder.restoreCallingIdentity(token);
}
public void screenShot() {
sendDownEvents(KeyEvent.KEYCODE_VOLUME_DOWN);
sendDownEvents(KeyEvent.KEYCODE_POWER);
try {
Thread.sleep(600);
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
sendUpEvents(KeyEvent.KEYCODE_VOLUME_DOWN);
sendUpEvents(KeyEvent.KEYCODE_POWER);
}
public void lockScreen2(){
sendDownEvents(KeyEvent.KEYCODE_POWER);
sendUpEvents(KeyEvent.KEYCODE_POWER);
}