天天看點

Sensor相關Google認證Sensor相關Google認證

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

Sensor相關Google認證Sensor相關Google認證
Sensor相關Google認證Sensor相關Google認證

現在流行全面屏情況下,FEATURE_SENSOR_LIGHT、FEATURE_SENSOR_PROXIMITY這兩個Feature容易報錯,很多手機廠商都會有自己的屏下光感和屏下接近定制。

1.1 mPackageManager.hasSystemFeature

Sensor相關Google認證Sensor相關Google認證

檢測 android.hardware.sensor*xml 配置,一般在frameworks/native/data/etc有配置

Sensor相關Google認證Sensor相關Google認證

1.2 SensorManager.getSensorList

adb shell dumpsys sensorservice > sensorservice.txt
           

dump檔案直接檢視确認就可以

Sensor相關Google認證Sensor相關Google認證

1.3 sensor.getName

也可以和1.2中一樣檢視sensorservice的dump檔案

2. android.hardware.cts.SensorTest#testBatchAndFlushUidIdle

cts\tests\sensor\src\android\hardware\cts\SensorTest.java
           
Sensor相關Google認證Sensor相關Google認證
Sensor相關Google認證Sensor相關Google認證
Sensor相關Google認證Sensor相關Google認證
Sensor相關Google認證Sensor相關Google認證
按照如圖,最終調用下面TestSensorManager中

assertFlushFail()

,實質檢查sensor的flush硬體支援
Sensor相關Google認證Sensor相關Google認證

2.1 檢查錯誤輸出資訊

Sensor相關Google認證Sensor相關Google認證

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失敗,在這裡可以判斷規避

Sensor相關Google認證Sensor相關Google認證

VTS:permission沒有android.hardware.sensor.accelerometer.xml

網上沒有搜到相同錯誤,這個理記錄一下,檢測明确提示vendor下沒有android.hardware.sensor.accelerometer.xml,需要配置copy到vendor

Sensor相關Google認證Sensor相關Google認證