I've enabled the proximity wakelock in my app, and it turns off the screen when the proximity sensor detects something. But there is a problem when the screen wakes back up -- it goes to the lockscreen, not my app. This happens regardless of the time that the screen was off (even if the sensor is cleared after a few seconds). Here's the code I used:
int PROXIMITY_SCREEN_OFF_WAKE_LOCK = 32;
mProximityWakeLock = pm.newWakeLock(PROXIMITY_SCREEN_OFF_WAKE_LOCK, LOG_TAG);
if(!mProximityWakeLock.isHeld()){
mProximityWakeLock.acquire();
}
Is there any way to correct that behavior?
If it is appropriate for your app you can use
Acquiring lock when screen needed to turn on and releasing when needed to off i.e. reverse to above wakeLock will work fine.
You can dismiss the lock screen, if it is not a secure one, using:
You can either call it on creation to prevent the lock screen from ever appearing or when you need to. I use it in combination with:
Which does not seem to interfere with the proximity lock.
Besides wakeLock from PowerManager you must create KeyGuard lock like this:
Create this lock only for the same time as you acquire proximity wake lock and lock screen will work all other time in your application.
If you're using
mProximityWakeLock.release();
, try usingmProximityWakeLock.release(1);
The API reference is also hidden, but you can look at the source code: http://grepcode.com/file/repository.grepcode.com/java/ext/com.google.android/android/2.1_r2/android/os/PowerManager.java#PowerManager.WakeLock.release%28int%29
How did u manage to turn back the screen on? I managed to turn the screen off, when the sensor is covered, using:
and after this, "releasing" or "reseting" the cover from/on the sensor, won't execute the other part of the code: