2012-02-21 90 views
2

在我的應用程序中,我想檢測到晃動事件,並且正在使用SensorEventListener,當我的活動在前臺運行時,代碼工作正常。但是當我按下手機的鎖定按鈕來鎖定屏幕時,無法檢測到振動事件。我已經在三星gts5360上測試了我的代碼。但是相同的代碼在sony ericssion xperia mini pro上運行良好。實際上,當我離開設備閒置約三秒鐘時,我的三星手機沒有檢測到晃動事件。 45秒後鎖定設備。當我的手機屏幕關閉時無法檢測到晃動事件android

然後我搖了一下電話,它沒有檢測到搖晃,但是當我在幾秒鐘後搖動手機時,它開始聆聽搖晃。我的三星手機的這種行爲是不一致的。它在隨機時間後開始並停止收聽震動事件。

現在我的問題是「這是Android設備的功能,當屏幕鎖定/關閉時,設備無法檢測到晃動事件?」。

如果是這樣,那麼我的三星手機在鎖定手機幾秒鐘後如何開始/停止收聽?

它是如何在「Sony ericssion xperia mini pro」屏幕鎖定/關閉的情況下持續監聽震動事件?

此功能是否因供應商不同而有所不同?

如果有些身體需要我的代碼然後讓我知道,我會提供它。

+0

請添加一些段落,並修正標點符號。你的問題很難閱讀。 – 2012-02-21 04:56:17

+0

編輯我的問題。如果需要代碼,請告訴我....... – picaso 2012-02-21 05:00:18

回答

0

問題是很長一段時間沒有一致的標準,當屏幕熄滅時如何處理傳感器。一些設備允許它繼續工作,而其他設備則不能。最終,Android團隊決定爲它工作的應用應獲得對這種操作的部分喚醒鎖:

PowerManager pm = (PowerManager)getSystemService(POWER_SERVICE); 
PowerManager.WakeLock lock = pm.newWakeLock(PowerManager.PARTIAL_WAKE_LOCK, "SensorRead"); 
lock.acquire(); 

需要這個權限:

你需要確保你釋放之後當你完成它的鎖定時,CPU可以完全進入睡眠狀態。

即使所有這一切都可能無法正常工作。我發現LG手機最近不太可能支持後臺傳感器。此外,許多摩托羅拉手機不需要喚醒鎖,但只需在屏幕關閉時重新註冊傳感器即可。