使用 adb 从损坏的 android 设备中回收传感器
Posted
技术标签:
【中文标题】使用 adb 从损坏的 android 设备中回收传感器【英文标题】:Recycling sensors from a broken android device using adb 【发布时间】:2016-02-05 03:23:52 【问题描述】:我刚弄坏了我的 s3。 3 年前,它是最好的智能手机之一。
问题如何通过usb获取手机惯性传感器的数值?
我想使用设备的加速度计、陀螺仪、磁力计、气压计和 gps 传感器。
假设我们想要得到:
三个轴上的原始加速度数据。我连接了 USB 电缆并运行了 adb root
和 adb shell
。好的。
root@android:/ # find / -type d -iname "sensors"
/sys/devices/virtual/sensors
/sys/class/sensors
“/sys/class/sensors”目录包含:
root@android:/ # ls sys/class/sensors
accelerometer_sensor
barometer_sensor
gyro_sensor
light_sensor
magnetic_sensor
proximity_sensor
问题
即使我倾斜手机,原始测量值也不会改变。传感器处于待机模式。它始终显示相同的值。
root@android:/sys/class/sensors/accelerometer_sensor # cat raw_data
-74,121,1016
我注意到控制传感器电源状态的文件夹 power/control。
root@android:/sys/class/sensors/accelerometer_sensor # cat power/control
auto
我尝试使用echo on/yes/ok/yeah/wtf > power/control
,但没有任何改变。
我记得当我让手机屏幕正常工作时,打开具有传感器权限的 Android 应用程序(例如具有指南针功能的 Google 地图)来启用传感器并以恒定速率刷新值就足够了. Java 应用程序可能会在文件中写入一些内容以激活传感器并读取原始值。
如何从外壳激活传感器?
【问题讨论】:
不确定你是否能做到,但你仍然可以启动一个应用程序,即使屏幕坏了也可以使用它来更新原始值还是我错了? 不幸的是,屏幕坏了,唯一可能的交互是通过USB线。 通过 adb 启动应用有什么问题?你甚至可以安装一个新的。 您是否考虑过通过网络将传感器数据发布到您的计算机或服务器上?还是不符合您的要求? 无论您是通过 USB 电缆还是通过网络连接获得结果,数据都将完全相同...如果您要将其发布到树莓派,服务器可能会完成以下工作接收和发送 【参考方案1】:使用
root@:/ # getevent -S
您可以获得所有传感器的列表。查找一个名为“proximity_sensor”的传感器并检索设备名称。 例如。
root@:/ # getevent -S
add device 1: /dev/input/event11
name: "compass_sensor"
add device 2: /dev/input/event8
name: "barometer_sensor"
add device 3: /dev/input/event7
name: "light_sensor"
add device 4: /dev/input/event6
name: "proximity_sensor"
如您所见,您的设备别名为“event6”
现在,进入目录 /sys/class/input/input6
cd /sys/class/input/input6
echo 1 > enable # TO ACTIVATE THE SENSOR
echo 0 > enable # TO TURN IT OFF AGAIN
【讨论】:
以上是关于使用 adb 从损坏的 android 设备中回收传感器的主要内容,如果未能解决你的问题,请参考以下文章
如何使用 adb shell 从 Android 设备中删除内置应用程序
android studio 使用adb命令传递文件到android设备