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