2012-09-27 39 views
0

喚醒Android的後臺服務聰明的辦法我想我的Android後臺進入睡眠模式 - 但隨後醒來,當用戶開始移動。然而,如果我在NORMAL模式下使用加速度計(最低採樣率〜5Hz),我擔心它仍然會消耗太多的功率。 到目前爲止,最好的方法是在USER_PRESENT - 屏幕開啓和解鎖。對抖動

甚至沒有screen on(possibly with keyguard present)的作品,因爲很多人可能知道,有很多糟糕的應用程序可以持續啓動屏幕並不時啓動屏幕。

我考慮讓用戶按音量加/減鍵..

有沒有更好的解決方案呢?

+1

你可能會引發約1個第二傳感器通過AlarmManager定期檢查但缺少風險事件。 – zapl

+0

這是個好主意。但正如你所說,如果它錯過了這個事件,那麼在我的服務被喚醒前2-3秒鐘。醒來後,它必須做一些快速的事情,所以任何延遲都會花費我... – Radu

回答

0

不知道你是否仍在尋找一種方法來做到這一點,但我發現(偶然)你可以啓動一個shakeListener,並且你的應用程序即使在後臺也會得到這些事件。我的意思是我不希望我的應用程序播放應用程序在後臺播放的聲音,但即使在後臺有另一個應用程序,然後甚至把睡覺的時候我會在我的口袋裏的手機走手機,這已經足夠了晃動造成應用程序在後臺執行該操作。)

/** 
    * load and set up the listener for shake detection 
    */ 
    private void loadShaker() { 
     mShaker = new ShakeListener(this); 
     mShaker.setOnShakeListener(new ShakeListener.OnShakeListener() { 
      public void onShake() { 
       if (!mActivityPaused) 
        performMyOperationCausedByShake(); 
       } 
     }); 
    } 

你也許可以這樣設置這使該performMyOperationCausedByShake()執行意圖,導致您想要的活動發生。

(這也許是因爲這是不太你在找什麼......很敏感的情況下)

+0

你在你的清單文件中設置了一個接收器嗎?如果是的話,關心2份? TKS! –

+0

@ john.k.doe你能給出一個ShakeListener源代碼或文檔的鏈接嗎? – Radu