使用 adb 从损坏的 android 设备中回收传感器

Use*_*erK 5 android adb android-sensors sensors

我刚刚弄坏了我的 s3。3年前,它是最好的智能手机之一。

Question如何通过usb获取手机惯性传感器的值?

我想使用设备的加速度计、陀螺仪、磁力计、气压计和 GPS 传感器。

假设我们想要得到:

  • 沿三个轴的原始加速度数据。

我连接了USB电缆和RANadb rootadb shell。好的。

root@android:/ # find / -type d -iname "sensors"                           
/sys/devices/virtual/sensors
/sys/class/sensors
Run Code Online (Sandbox Code Playgroud)

'/sys/class/sensors' 目录包含:

root@android:/ # ls sys/class/sensors                                          
accelerometer_sensor
barometer_sensor
gyro_sensor
light_sensor
magnetic_sensor
proximity_sensor
Run Code Online (Sandbox Code Playgroud)

问题

即使我倾斜手机,原始测量值也不会改变。传感器处于待机模式。它始终显示相同的值。

root@android:/sys/class/sensors/accelerometer_sensor # cat raw_data            
-74,121,1016
Run Code Online (Sandbox Code Playgroud)

我注意到控制传感器电源状态的文件夹 power/control。

root@android:/sys/class/sensors/accelerometer_sensor # cat power/control       
auto
Run Code Online (Sandbox Code Playgroud)

我试过了,echo on/yes/ok/yeah/wtf > power/control但没有任何改变。

我记得当我让手机屏幕工作时,打开一个具有传感器权限的 Android 应用程序就足够了,比如具有指南针功能的谷歌地图,以启用传感器并以恒定速率刷新值。Java 应用程序可能会在文件中写入一些内容以激活传感器并读取原始值。

如何从外壳激活传感器?

小智 4

使用

root@:/ # getevent -S
Run Code Online (Sandbox Code Playgroud)

您可以获得所有传感器的列表。查找名为“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"
Run Code Online (Sandbox Code Playgroud)

如您所见,您的设备别名为“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
Run Code Online (Sandbox Code Playgroud)