簡體   English   中英

Android接近傳感器-值不正確

[英]Android Proximity Sensor - Incorrect value

我在嘗試創建一個跟蹤接近傳感器值的應用程序時遇到了一個問題。 該應用程序的目的是定期記錄瞬時接近值(例如30秒)。

根據API文檔,將為該類型的傳感器創建並附加標准偵聽器。 但是,即使我用手遮住傳感器,該值也始終報告為“ 5.0”(5cm,傳感器的最大值)。

但是,如果我啟動一個DIFFERENT應用程序(該應用程序還監視接近傳感器值),則兩個應用程序都會開始正確報告接近度。 當我關閉另一個應用程序( Android Sensor Box )時,我的應用程序始終恢復為僅報告5.0。

我已經調試了應用程序,並在“ onSensorChanged ”事件中設置了一個斷點,以再次檢查將什么SensorEvent對象傳遞給onSensorChanged方法,並且始終為5.0

編輯#2:它似乎不限於接近傳感器。 陀螺儀傳感器的行為相同,而加速度計和磁力計則顯示正確的最新值。 引用和訪問這四個文件的方式相同。

有任何想法嗎?

好吧,事實證明,我將再次回答自己的問題。

應用程序的結構方式(有充分的理由)意味着注冊了一個偵聽器,並且傳感器的第一個報告值被當作讀數,而沒有不斷接受新的讀數。 這對於加速度計讀數工作正常,但事實證明,某些傳感器在該第一個讀數中報告了它們的默認值(例如,接近傳感器為“ FAR”,陀螺儀為0.0 / 0.0 / 0.0)。 只有在2-3個“ onSensorChanged”事件之后,才開始報告正確的值。

我假設這與節電有關,某些傳感器需要時間才能“准備好”報告數據。 我不知道為什么可接受的做法是用錯誤的值來觸發sensorChanged事件,但這似乎正在發生。

盡管如此,對我來說,解決方法是丟棄前2-3個讀數(無論如何它們都以毫秒為間隔進來),而只是將第四個讀數用作更可靠的讀數。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM