提问人:sumofty 提问时间:11/9/2023 最后编辑:sumofty 更新时间:11/9/2023 访问量:43
使用 Android 系统级应用程序,如何注入AXIS_RTRIGGER或AXIS_GAS事件?
With and Android System-Level app, how do you inject AXIS_RTRIGGER or AXIS_GAS events?
问:
我正在尝试制作自己的控制器,该控制器与具有“android.permission.INJECT_EVENTS”权限的系统级应用程序一起使用。该应用程序在后台运行并解释硬件按钮,然后使用 InputManager 将它们发送到活动显示器。这是在带有 Kotlin 的 Android 12L 最低操作系统版本上。查看了 Github 和 cs.android.com,除了对 ca.android.com 的单元测试之外,找不到任何类似的东西,但它们只是验证轴值是否转换为字符串,而不是实际视图。
我不知道如何让它工作
val eventTime = SystemClock.uptimeMillis()
val pointerProperties = MotionEvent.PointerProperties()
pointerProperties.id = 1
val pointerCoords = MotionEvent.PointerCoords()
pointerCoords.setAxisValue(MotionEvent.AXIS_RTRIGGER, value)
val event = MotionEvent.obtain(
/* downTime= */ eventTime,
/* eventTime= */ eventTime,
/* action= */ MotionEvent.ACTION_MOVE,
/* pointerCount= */ 1,
/* pointerProperties= */ arrayOf(pointerProperties),
/* pointerCoords= */ arrayOf(pointerCoords),
/* metaState= */ 0,
/* buttonstate= */ 0,
/* xPrecision= */ 0.1f,
/* yPrecision= */0.1f,
/* deviceId= */mInputManager.getInputDevice(-1).id, //Using -1 as that's a virtual inputDevice
/* edgeFalgs= */0,
/* source= */InputDevice.SOURCE_GAMEPAD,
/* flags= */0
)
mInputManager.injectInputEvent(event, InputEventInjectionSync.WAIT_FOR_RESULT)
event.recycle()
使用 https://play.google.com/store/apps/details?id=ru.elron.gamepadtester&hl=en_US&gl=US 进行测试 作为参考,此代码就像左模拟摇杆一样工作。
val eventTime = SystemClock.uptimeMillis()
val event = MotionEvent.obtain(
/* downTime= */ eventTime,
/* eventTime= */ eventTime,
/* action= */ MotionEvent.ACTION_MOVE,
/* x= */ angle,
/* y= */ 0.0f,
/* pressure= */ 1.0f,
/* size= */ 0f,
/* metaState= */ 0,
/* xPrecision= */ 0.1f,
/* yPrecision= */ 0.1f,
/* deviceId= */ mInputManager.getInputDevice(-1).id,
/* edgeFlags= */ 0
)
event.source = InputDevice.SOURCE_JOYSTICK
mInputManager.injectInputEvent(event, InputEventInjectionSync.NONE)
event.recycle()
我尝试了 InputEventInjectionSync、SOURCE_GAMEPAD、SOURCE_JOYSTICK、SOURCE_KEYBOARD的不同变体,并在 setAxisValue 中使用了不同的轴类型
答: 暂无答案
上一个:获取活动/已检查评级的值
评论