【发布时间】:2015-02-08 16:16:10
【问题描述】:
我想知道是否有办法将传感器事件直接注入 Android 框架。 所以我首先通过 OnSensorChanged 中的 Thread.dumpstack() 检查了传感器事件流。 (SensorActivity 是我为测试而做的一个活动)
java.lang.Throwable: stack dump at java.lang.Thread.dumpStack(Thread.java:489)
at com.test.sensor.SensorActivity.onSensorChanged(SensorActivity.java:64)
at android.hardware.SystemSensorManager$SensorEventQueue.dispatchSensorEvent(SystemSensorManager.java:469)
at android.os.MessageQueue.nativePollOnce(Native Method)
at android.os.MessageQueue.next(MessageQueue.java:138)
at android.os.Looper.loop(Looper.java:123)
at android.app.ActivityThread.main(ActivityThread.java:5001)
at java.lang.reflect.Method.invokeNative(Native Method)
at java.lang.reflect.Method.invoke(Method.java:515)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:785)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:601)
由此,我可以知道 Sensor 事件是由 MessageQueue 和 Looper 处理的。
所以我想如果我可以将假传感器事件消息排入 MessageQueue,Android 框架将照常处理传感器事件。
但是我不知道传感器事件消息的外观以及如何入队。
我的问题是:
我应该将什么消息放入 MessageQueue 以生成虚假传感器事件?以及如何?
还有其他方法可以注入虚假传感器事件吗?
我在Android框架层(4.4.4)修改源代码,而不是在App层。
提前致谢!!
【问题讨论】:
-
@maven 我读到了,据我所知,这仅适用于触摸事件。
标签: android frameworks sensors platform