Android Wakelock仅在USB连接时工作(仅限4.2.2)

时间:2014-09-27 11:58:23

标签: android wakelock

我使用唤醒锁打开屏幕。

        getWindow().addFlags(WindowManager.LayoutParams.FLAG_TURN_SCREEN_ON);
        getWindow().addFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON);
        getWindow().addFlags(WindowManager.LayoutParams.FLAG_SHOW_WHEN_LOCKED);
        getWindow().addFlags(WindowManager.LayoutParams.FLAG_DISMISS_KEYGUARD);
//acquiring wake lock
        PowerManager pm = (PowerManager) getApplicationContext().getSystemService(Context.POWER_SERVICE);
        if (mWakeLock == null) {
            mWakeLock = pm.newWakeLock((PowerManager.FULL_WAKE_LOCK | PowerManager.SCREEN_BRIGHT_WAKE_LOCK | PowerManager.ACQUIRE_CAUSES_WAKEUP), TAG);
        }
        if (!mWakeLock.isHeld()) {
            mWakeLock.acquire();
        }
//releasing wakelock
Runnable releaseWakelock = new Runnable() {

            @Override
            public void run() {
                Log.d("timeout","timeout!!!");
                getWindow().clearFlags(WindowManager.LayoutParams.FLAG_TURN_SCREEN_ON);
                getWindow().clearFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON);
                getWindow().clearFlags(WindowManager.LayoutParams.FLAG_SHOW_WHEN_LOCKED);
                getWindow().clearFlags(WindowManager.LayoutParams.FLAG_DISMISS_KEYGUARD);
                if (mWakeLock != null && mWakeLock.isHeld()) {
                    mWakeLock.release();
                }
            }
        };
        new Handler().postDelayed(releaseWakelock, WAKELOCK_TIMEOUT);

我还添加了AndroidManifest的权限

经过测试,它在我的galaxy note2 4.4.2中正常工作,所以我猜我的代码至少部分正确

然而,我的galaxy s4 lte-a(4.2.2)在usb连接时正常工作,但是当它没有通过usb电缆连接时它没有。

问题是什么?我发现有类似问题的人发布了一些问题,但都没有令人满意的答案。

是4.2.2已知错误吗?或者我做错了什么?

如果您有任何想法,请提供帮助

提前致谢

0 个答案:

没有答案