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中,實質檢查sensor的flush硬體支援
assertFlushFail()
![]()
Sensor相關Google認證Sensor相關Google認證
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