命令:
dumpsys sensorservice
1.dumpsys sensorservice查看最近申请记录
dumpsys sensorservice命令输出Previous Registrations.
Previous Registrations:
23:07:43 + 0x00000008 pid=16587 uid=10397 package=com.start.testdemo.ui.udfp.fql.XsqFQLActivity samplingPeriod=66667us batchingPeriod=0us
23:07:41 - 0x00000008 pid=16587 uid=10397 package=com.start.testdemo.ui.udfp.fql.XsqFQLActivity
23:07:01 + 0x00000008 pid=16587 uid=10397 package=com.start.testdemo.ui.udfp.fql.XsqFQLActivity samplingPeriod=66667us batchingPeriod=0us
23:06:48 - 0x00000008 pid=16587 uid=10397 package=com.start.testdemo.ui.udfp.fql.XsqFQLActivity
23:06:47 + 0x00000008 pid=16587 uid=10397 package=com.start.testdemo.ui.udfp.fql.XsqFQLActivity samplingPeriod=66667us batchingPeriod=0us
23:06:15 - 0x00000008 pid=16587 uid=10397 package=com.start.testdemo.ui.udfp.fql.XsqFQLActivity
23:06:13 + 0x00000008 pid=16587 uid=10397 package=com.start.testdemo.ui.udfp.fql.XsqFQLActivity samplingPeriod=66667us batchingPeriod=0us
23:06:11 - 0x00000008 pid=16587 uid=10397 package=com.start.testdemo.ui.udfp.fql.XsqFQLActivity
23:06:11 + 0x00000008 pid=16587 uid=10397 package=com.start.testdemo.ui.udfp.fql.XsqFQLActivity samplingPeriod=66667us batchingPeriod=0us
21:19:08 - 0x00000001 pid= 3725 uid=10372 package=org.qiyi.basecore.widget.shakeguide.b
21:19:05 - 0x00000001 pid= 3725 uid=10372 package=org.qiyi.basecore.widget.shakeguide.b
21:19:05 + 0x00000001 pid= 3725 uid=10372 package=org.qiyi.basecore.widget.shakeguide.b samplingPeriod=200000us batchingPeriod=0us
21:19:03 + 0x00000001 pid= 3725 uid=10372 package=org.qiyi.basecore.widget.shakeguide.b samplingPeriod=200000us batchingPeriod=0us
21:18:28 - 0x00000001 pid=22095 uid=10339 package=dib.a
以上输出可以看出最近申请sensor的记录的PID, UID, 以及访问的组件package, 以及访问的sensor handle.
2.dumpsys sensorservice查看设备中所有的sensor信息
Sensor Device:
Total 6 h/w sensors, 6 running 0 disabled clients:
0x00000001) active-count = 1; sampling_period(ms) = {200.0}, selected = 200.00 ms; batching_period(ms) = {2000.0}, selected = 2000.00 ms
0x00000005) active-count = 2; sampling_period(ms) = {1000.0, 200.0}, selected = 200.00 ms; batching_period(ms) = {0.0, 0.0}, selected = 0.00 ms
0x00000008) active-count = 1; sampling_period(ms) = {66.7}, selected = 66.67 ms; batching_period(ms) = {0.0}, selected = 0.00 ms
Sensor List:
0x00000001) ACCELEROMETER | stk8ba58 | ver: 1 | type: android.sensor.accelerometer(1) | perm: n/a | flags: 0x00000000
continuous | minRate=1.00Hz | maxRate=100.00Hz | no batching | non-wakeUp |
0x00000002) MAGNETOMETER | MTK | ver: 1 | type: android.sensor.magnetic_field(2) | perm: n/a | flags: 0x00000000
continuous | minRate=5.00Hz | maxRate=50.00Hz | FIFO (max,reserved) = (4500, 600) events | non-wakeUp |
0x00000003) ORIENTATION | MTK | ver: 1 | type: android.sensor.orientation(3) | perm: n/a | flags: 0x00000000
continuous | minRate=50.00Hz | maxRate=200.00Hz | no batching | non-wakeUp |
0x00000005) LIGHT | MTK | ver: 1 | type: android.sensor.light(5) | perm: n/a | flags: 0x00000002
on-change | minRate=1.00Hz | minDelay=0us | no batching | non-wakeUp |
0x00000008) PROXIMITY | MTK | ver: 1 | type: android.sensor.proximity(8) | perm: n/a | flags: 0x00000003
on-change | minRate=1.00Hz | minDelay=0us | FIFO (max,reserved) = (4500, 100) events | wakeUp |
0x0000001b) DEVICE_ORIENTATION | MTK | ver: 1 | type: android.sensor.device_orientation(27) | perm: n/a | flags: 0x00000002
on-change | minRate=1.00Hz | minDelay=0us | no batching | non-wakeUp |
0x5f67656f) GeoMag Rotation Vector Sensor | AOSP | ver: 3 | type: android.sensor.geomagnetic_rotation_vector(20) | perm: n/a | flags: 0x00000000
continuous | maxDelay=0us | maxRate=100.00Hz | no batching | non-wakeUp |
Fusion States:
从以上可知,本机一共有6个sensor, 被禁的为0.
Total 6 h/w sensors, 6 running 0 disabled clients:
其中每条输出内容如下:
以light-sensor为例,
0x00000005) LIGHT | MTK | ver: 1 | type: android.sensor.light(5) | perm: n/a | flags: 0x00000002
on-change | minRate=1.00Hz | minDelay=0us | no batching | non-wakeUp |
其输出的对应的各个字段声明如下:
- 0x00000005 // handle that identifies this sensors. 唯一标识符.
- MTK // sensor制造商Mediatek
- ver:1 //表示版本号
- type:android.sensor.light(5) // 表示light type sensor
- perm:n/a // 需要的访问权限,n/a表示无.
- flags:0x00000002 // 2表示上报方式是on_change.
- on-change //表示sensor数据发生变化才触发listener回调.
- non-wakeUp // 表示此sensor非wake up型sensor. 即light-sensor不会因为光线变化数据变化而主动唤醒屏幕.
http://aospxref.com/android-14.0.0_r2/xref/hardware/libhardware/include/hardware/sensors.h
文件中的sensor_t 结构体.
struct sensor_t {
/* Name of this sensor.
* All sensors of the same "type" must have a different "name".
*/
const char* name;
/* vendor of the hardware part */
const char* vendor;
/* version of the hardware part + driver. The value of this field
* must increase when the driver is updated in a way that changes the
* output of this sensor. This is important for fused sensors when the
* fusion algorithm is updated.
*/
int