Sensor相关Google认证
Google认证包含CTS、GTS、VTS,还有一个漏洞STS。
1. android.app.cts.SystemFeaturesTest#testSensorFeatures
cts/tests/app/src/android/app/cts/SystemFeaturesTest.java
PackageManager#hasSystemFeature 检查传感器特性是否与 SensorManager#getSensorList 返回的传感器相对应。查看代码检测了三点:Feature、Sensor List、sensor.getName
现在流行全面屏情况下,FEATURE_SENSOR_LIGHT、FEATURE_SENSOR_PROXIMITY这两个Feature容易报错,很多手机厂商都会有自己的屏下光感和屏下接近定制。
1.1 mPackageManager.hasSystemFeature
检测 android.hardware.sensor*xml 配置,一般在frameworks/native/data/etc有配置
1.2 SensorManager.getSensorList
adb shell dumpsys sensorservice > sensorservice.txt
dump文件直接查看确认就可以
1.3 sensor.getName
也可以和1.2中一样查看sensorservice的dump文件
2. android.hardware.cts.SensorTest#testBatchAndFlushUidIdle
cts\tests\sensor\src\android\hardware\cts\SensorTest.java
按照如图,最终调用下面TestSensorManager中
assertFlushFail()
,实质检查sensor的flush硬件支持
2.1 检查错误输出信息
2.2 检查的功能代码
frameworks\base\core\java\android\hardware\SensorManager.java
frameworks\base\core\java\android\hardware\SystemSensorManager.java
frameworks\native\libs\sensor\SensorEventQueue.cpp
frameworks\native\services\sensorservice\SensorEventConnection.cpp
最终,调用SensorService中flushSensor
方法,实际项目中遇到过 VirtualSensor 不支持cts失败,在这里可以判断规避
VTS:permission没有android.hardware.sensor.accelerometer.xml
网上没有搜到相同错误,这个理记录一下,检测明确提示vendor下没有android.hardware.sensor.accelerometer.xml,需要配置copy到vendor