我使用唤醒锁打开屏幕。
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已知错误吗?或者我做错了什么?
如果您有任何想法,请提供帮助
提前致谢