在摇晃时唤醒Android后台服务的聪明方法



我希望我的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()执行导致所需活动的意图。

(可能是这种情况对于您要查找的内容还不够敏感......

最新更新