Saturday, September 27, 2014

Android : Android Wakelock working only if USB connected (4.2.2 only)



I'm using wake lock to turn on screen.



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);


I also added permission to AndroidManifest


When tested, it works normally in my galaxy note2 4.4.2, so I guess my code is at least partially right


However, my galaxy s4 lte-a (4.2.2) works normally when usb connected, but it doesn't when it is not connected via usb cable.


What is the problem?? I found some questions posted by people with similar problems, but none had satisfying answer.


Is it 4.2.2 known bug?? or am I doing something wrong??


Please help if you have any idea


Thanks in advance


No comments:

Post a Comment