2016-06-12 50 views
10

打盹模式如何影響註冊的聽衆?打盹模式如何影響註冊的聽衆(特別是傳感器聽衆)

另外我想知道它如何可能影響傳感器監聽器。

我的問題是,我有一個WatchFaceService在清單中具有喚醒鎖定權限。 WatchFace每分鐘運行一次onTimeTick。當設備被打盹時,很多時候會發生這種情況。那時它爲HR註冊一個監聽器來收集10個值。根據我的觀察,在聽者註冊後打盹模式開始,但傳感器保持活動狀態。 例如,HR傳感器保持點亮。

這是正常的,爲什麼?這裏是我的意見


聽者的0微秒的採樣週期:

sensorManager.registerListener(averagingSensorEventListener, sensor, averageSamplingPeriodUs, averageMaxReportLatencyUs); 

日誌:

06-12 17:35:00.308 724-724/? D/android.sensor.heart_rate: Starting average calculation 
06-12 17:36:01.065 724-724/? D/android.sensor.heart_rate: Event value 75.0 accepted 
06-12 17:36:01.166 724-724/? D/android.sensor.heart_rate: Event value 75.0 accepted 
06-12 17:36:20.471 724-724/? D/android.sensor.heart_rate: Event value 71.0 accepted 
06-12 17:37:01.066 724-724/? D/android.sensor.heart_rate: Event value 72.0 accepted 
06-12 17:38:01.067 724-724/? D/android.sensor.heart_rate: Event value 73.0 accepted 
06-12 17:39:00.072 724-724/? D/android.sensor.heart_rate: Event value 81.0 accepted 
06-12 17:39:28.135 724-724/? D/android.sensor.heart_rate: Event value 81.0 accepted 
06-12 17:39:28.276 724-724/? D/android.sensor.heart_rate: Event value 80.0 accepted 
06-12 17:39:29.244 724-724/? D/android.sensor.heart_rate: Event value 77.0 accepted 
06-12 17:39:30.110 724-724/? D/android.sensor.heart_rate: Event value 75.0 accepted 
06-12 17:39:31.172 724-724/? D/android.sensor.heart_rate: Event value 73.0 accepted 
06-12 17:39:31.173 724-724/? D/android.sensor.heart_rate: Stopped listening 
06-12 17:39:31.180 724-724/? D/android.sensor.heart_rate: Average calculated: 76.0 
06-12 17:39:31.180 724-724/? D/android.sensor.heart_rate: Event value 76.0 accepted 

時間超過4分鐘完成並在這些分鐘內HR傳感器處於活動狀態(綠燈),但不觸發onSensorChanged回調或報告已註冊偵聽器的值。


UPDATE:

對於我的問題,並從莫拉萊斯優秀的答案後,我通過我每次需要註冊一個監聽我獲得喚醒鎖,我釋放時間解決它的取樣,之後。這樣,事件就符合我所要求的時間,並且不會使傳感器保持活動狀態。

+2

引用此鏈接:https://source.android.com/devices/tech/power/mgmt.html我認爲不應該有任何打瞌睡傳感器的影響,因爲系統本身使用它來進出瞌睡。 – Calvin

+0

在這段時間內顯示屏是否關閉? – 7383

+0

@ 7383不用這是一個表面,所以沒有理由。打瞌睡可以踢入手錶,但每分鐘都會立即打瞌睡。有我註冊聽衆的地方。 –

回答

2

傳感器

文檔中說,有幾個sensor types,每個傳感器具有reporting-mode連續上變化一拍特殊),每個傳感器由type分類傳感器返回:

  • 喚醒傳感器:ensur e他們的數據獨立於SoC的狀態而被傳遞。
  • 非喚醒傳感器:不會阻止SoC進入掛起模式,也不會喚醒SoC以報告數據。

打盹文檔不指出有關特定傳感器的任何信息,除了需要配置打盹模式的significant motion sensor

要查看個人傳感器類型說明有關事件生成時間的詳細信息,您可以檢查documentation

限制

有一些限制適用於您的應用程序,而在打盹模式:

  • 網絡訪問被暫停。
  • 系統忽略wake locks
  • 標準AlarmManager報警(包括setExact()setWindow())被推遲到下一個維護窗口。
  • 系統不執行Wi-Fi掃描。
  • 系統不允許運行sync adapters
  • 系統不允許JobScheduler運行。

打瞌睡可以不同的方式影響應用程序,具體取決於它們提供的功能和它們使用的服務。許多應用程序正常運行而不需要修改打盹週期。在某些情況下,你必須優化您的應用程序管理網絡報警工作同步的方式。應用程序應該能夠在每個維護窗口期間有效地管理活動。

Optimizing for Doze and App Standby

+1

拿我的錢! 感謝您的詳細幫助。我已經得出了相同的結論,但你只是說出了我的想法,並且感到自信。 我會更新這個問題,只是爲了補充一點,我通過請求喚醒鎖並在聽衆收集足夠的數據之後立即釋放它來解決我的問題。 再次非常感謝。我會睡得很香。 –