@ -24,6 +24,10 @@ public final class Device {
public static final int POWER_MODE_OFF = SurfaceControl . POWER_MODE_OFF ;
public static final int POWER_MODE_NORMAL = SurfaceControl . POWER_MODE_NORMAL ;
public static final int INJECT_MODE_ASYNC = InputManager . INJECT_INPUT_EVENT_MODE_ASYNC ;
public static final int INJECT_MODE_WAIT_FOR_RESULT = InputManager . INJECT_INPUT_EVENT_MODE_WAIT_FOR_RESULT ;
public static final int INJECT_MODE_WAIT_FOR_FINISH = InputManager . INJECT_INPUT_EVENT_MODE_WAIT_FOR_FINISH ;
public static final int LOCK_VIDEO_ORIENTATION_UNLOCKED = - 1 ;
public static final int LOCK_VIDEO_ORIENTATION_INITIAL = - 2 ;
@ -164,7 +168,7 @@ public final class Device {
return supportsInputEvents ;
}
public static boolean injectEvent ( InputEvent inputEvent , int displayId ) {
public static boolean injectEvent ( InputEvent inputEvent , int displayId , int injectMode ) {
if ( ! supportsInputEvents ( displayId ) ) {
throw new AssertionError ( "Could not inject input event if !supportsInputEvents()" ) ;
}
@ -173,30 +177,31 @@ public final class Device {
return false ;
}
return SERVICE_MANAGER . getInputManager ( ) . injectInputEvent ( inputEvent , InputManager. INJECT_INPUT_EVENT_MODE_ASYNC ) ;
return SERVICE_MANAGER . getInputManager ( ) . injectInputEvent ( inputEvent , injectMode ) ;
}
public boolean injectEvent ( InputEvent event ) {
return injectEvent ( event , displayId );
public boolean injectEvent ( InputEvent event , int injectMode ) {
return injectEvent ( event , displayId , injectMode );
}
public static boolean injectKeyEvent ( int action , int keyCode , int repeat , int metaState , int displayId ) {
public static boolean injectKeyEvent ( int action , int keyCode , int repeat , int metaState , int displayId , int injectMode ) {
long now = SystemClock . uptimeMillis ( ) ;
KeyEvent event = new KeyEvent ( now , now , action , keyCode , repeat , metaState , KeyCharacterMap . VIRTUAL_KEYBOARD , 0 , 0 ,
InputDevice . SOURCE_KEYBOARD ) ;
return injectEvent ( event , displayId );
return injectEvent ( event , displayId , injectMode );
}
public boolean injectKeyEvent ( int action , int keyCode , int repeat , int metaState ) {
return injectKeyEvent ( action , keyCode , repeat , metaState , displayId );
public boolean injectKeyEvent ( int action , int keyCode , int repeat , int metaState , int injectMode ) {
return injectKeyEvent ( action , keyCode , repeat , metaState , displayId , injectMode );
}
public static boolean pressReleaseKeycode ( int keyCode , int displayId ) {
return injectKeyEvent ( KeyEvent . ACTION_DOWN , keyCode , 0 , 0 , displayId ) & & injectKeyEvent ( KeyEvent . ACTION_UP , keyCode , 0 , 0 , displayId ) ;
public static boolean pressReleaseKeycode ( int keyCode , int displayId , int injectMode ) {
return injectKeyEvent ( KeyEvent . ACTION_DOWN , keyCode , 0 , 0 , displayId , injectMode )
& & injectKeyEvent ( KeyEvent . ACTION_UP , keyCode , 0 , 0 , displayId , injectMode ) ;
}
public boolean pressReleaseKeycode ( int keyCode ) {
return pressReleaseKeycode ( keyCode , displayId );
public boolean pressReleaseKeycode ( int keyCode , int injectMode ) {
return pressReleaseKeycode ( keyCode , displayId , injectMode );
}
public static boolean isScreenOn ( ) {
@ -272,7 +277,7 @@ public final class Device {
if ( ! isScreenOn ( ) ) {
return true ;
}
return pressReleaseKeycode ( KeyEvent . KEYCODE_POWER , displayId );
return pressReleaseKeycode ( KeyEvent . KEYCODE_POWER , displayId , Device . INJECT_MODE_ASYNC );
}
/ * *