2014-03-03 46 views
0

我正在研究一個簡單的應用程序,該應用程序在加速度計達到特定值時播放聲音。
當屏幕打開時,沒有問題。加速器運行的頻率很好。
這是正常工作。 屏幕關閉時是否可以覆蓋SensorManager頻率?

現在,我想在屏幕關閉時執行此操作。
由於某種原因,無論SENSOR_DELAY如何,我每秒只能獲得2次傳感器更新。
我懷疑這與Android保存它的力量有關。但我需要更高的頻率才能準確讀取傳感器數據。

在我打開喚醒鎖之前,我想知道是否有可能重寫這個「強制」頻率降低以及是否這是一個依賴於設備的問題。即使屏幕關閉,我仍需要保持更高的更新頻率。

回答

0

我不知道,但你有更多的更新使用SENSOR_DELAY_FASTEST?然後插入這樣的事情到onSensorChanged():

public void onSensorChanged(SensorEvent event) 
{ 
    if (event.sensor.getType() == Sensor.TYPE_) 
    { 
    long actualTime = System.currentTimeMillis(); 
     if (actualTime - lastUpdate > 63) 
     { 
     lastUpdate = actualTime; 
     // update 
     } 
    } 
} 
+0

SENSOR_DELAY_FASTEST不會在屏幕關閉時更改間隔。不管我使用什麼傳感器延遲,它每秒鐘回落到約2次更新。你認爲這是一個特定的場合嗎? – Robin

+0

我不知道。從未使用傳感器與設備睡覺。猜是時候讀SensorListener文檔了 –

+0

也許你可以使用部分喚醒鎖。我不知道你想要做什麼。也許一個BroadcastReceiver會工作? –

0

傳感器延遲值僅僅是建議(或者至少它們是針對Android 4.0/4.1)。根據實施情況的不同,傳感器可能比請求更快地發送事件。這是由驅動程序決定的,行爲可能因設備型號而異。

爲什麼要限制傳感器的事件傳輸速率?如果您在後臺執行復雜的處理並想減少處理器的負載,請考慮以下方法:當您接收並處理事件時,記錄其時間戳。當下一個事件到達時,計算它的時間戳和先前存儲的時間戳之間的差異。僅當時間戳差異至少與閾值一樣大時才處理事件。雖然這不會降低事件傳輸速率,但會減少處理時間,因爲只有n個事件中的一個得到處理。

+0

感謝您的迴應:)。但這不是我想要的。我重申了我最初的問題,試圖澄清我的真正含義。 – Robin