2015-11-06 130 views
2

我將使用活動識別API對應用程序進行一些優化。 總之,我需要知道什麼時候設備仍然存在。但我不希望應用程序始終保持傳感器電池耗盡。檢查Sensor.TYPE_SIGNIFICANT_MOTION是否支持硬件

在報道:

爲了節省電池,當該設備是「STILL」用於在延長的時間週期活動報告可能會停止。一旦設備再次移動,它將恢復。這隻發生在支持Sensor.TYPE_SIGNIFICANT_MOTION硬件的設備上。

我只會註冊到ActivityRecognitionAPI,以便支持HW進行重要運動檢測的設備。 但我找不到一種方法來檢查此支持何時存在。

使用:

SensorManager sensorManager = (SensorManager) getSystemService(Context.SENSOR_SERVICE); 
    Sensor sensor = sensorManager.getDefaultSensor(Sensor.TYPE_SIGNIFICANT_MOTION); 
    boolean supportSignificantMotion = (sensor != null); 

如果載體是由HW或SW(在大多數設備這可以僅通過軟件上的加速度計傳感器來實現)不區分。

有誰知道是否可能執行該檢查?

謝謝

回答

2

我只是檢查活動識別API和我有同樣的問題。

據我所知,沒有辦法檢查它是硬件還是軟件傳感器,但是當我在https://source.android.com/devices/sensors/sensor-types.html#significant_motion處讀到時,我猜測所有重要的運動傳感器都是軟件。也許你報告的文件是一個錯字。

我認爲它應該工作,只要它是一個喚醒傳感器。

是困惑我是語句

getDefaultSensor(SENSOR_TYPE_SIGNIFICANT_MOTION)返回一個非喚醒 傳感器

非喚醒傳感器也不會醒的事情設備,如http://developer.android.com/intl/pt-br/reference/android/hardware/Sensor.html#isWakeUpSensor()

中所述但是在重要運動傳感器的文檔中(http://developer.android.com/intl/pt-br/reference/android/hardware/Sensor.html#TYPE_SIGNIFICANT_MOTION)表示這是一個喚醒傳感器。

也許這取決於軟件的實施? 如果是這樣,將有可能與http://developer.android.com/intl/pt-br/reference/android/hardware/Sensor.html#isWakeUpSensor()

檢查我仍在搜索和測試。如果我收到任何消息,我會更新答案。

請讓我知道你是否有任何消息。

PS:我知道這不是一個真正的答案,但它太長了評論

+0

也許你找到了解決辦法。它可能是一個喚醒傳感器,只要它是一個硬件傳感器(即使在CPU休眠時它也能工作)。如果是軟件(加速度計輪詢),它需要在CPU上運行,並且在CPU休眠時不能運行(因此它不能喚醒CPU)。 – ARLabs