更新到工作:
我能解決我被引入一類具有特定問題-scope靜態計數器,並忽略任何x個事件。但我仍然想知道我在做什麼錯誤:在微秒內向提示器註冊一個提示,而不是使用四個給定常量中的一個。「自定義」傳感器事件發生率似乎不SensorManager.registerListener(SensorEventListener監聽器,傳感器傳感器,詮釋率)
在我的應用程序中的活動是使傳感器獲取設備的方向,確定滾動並使用它。
我使用
SensorManager.registerListener(SensorEventListener listener, Sensor sensor, int rate)
註冊我的傳感器。從Android Documentation for this method:
參數
[...]
率
速度傳感器事件在交付。這只是對系統的暗示。事件可能比指定速率更快或更慢。通常事件收到更快。該值必須是SENSOR_DELAY_NORMAL,SENSOR_DELAY_UI,SENSOR_DELAY_GAME或SENSOR_DELAY_FASTEST之一,或者所需的事件之間的延遲(以微秒爲單位)。
如果我使用4個預定義的常量之一,那麼應用程序工作正常;但是,這些常量都會提供速度提示,這些提示太快而無法滿足我的需求。我必須發送一個UDP數據包,其中包含每個事件更改的一些信息,並且接收端似乎正在使用任何預定義的速率完全淹沒消息。使用像30000這樣的整數(因爲API以毫秒爲單位指定數量)會導致應用程序停止一起報告傳感器事件。
我錯過了什麼使我無法使用我自己的事件速率提示?
是的,我也想這樣做!我能想到的唯一解決方案是手動過濾數據包。 – David 2011-07-08 16:03:09
這是一個徒勞的目標(基於直接經驗),因爲傳感器驅動程序沒有義務服從您的提示。事實上,它可以以任何/所有預定義的常數以相同的速率發送事件!你最好的選擇是在你達到你想要的時間三角洲時積累和觸發。 – 2011-10-19 11:05:32