2012-09-27 37 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