我希望我的Android背景进入睡眠模式 - 但是当用户开始移动时会醒来。但是,如果我在正常模式下使用加速度计(最低采样率~5Hz),我担心它仍然会消耗太多功率。到目前为止,最好的方法是在USER_PRESENT - 打开屏幕并解锁。
甚至屏幕打开(可能在键盘锁存在的情况下)都不起作用,因为正如你们中的许多人可能知道的那样,有很多糟糕的应用程序会保持唤醒锁并不时启动屏幕。
我正在考虑让用户按下音量增大/减小按钮。
有没有更好的解决方案?
>不知道你是否还在想办法做到这一点,但我发现(偶然地)你可以启动一个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()
执行导致所需活动的意图。
(可能是这种情况对于您要查找的内容还不够敏感......