private final static String WAKELOCK_KEY = "LocationManagerService";
private AlarmManager mAlarmManager;
private long mAlarmInterval = 0;
- private boolean mScreenOn = true;
private PowerManager.WakeLock mWakeLock = null;
private long mWakeLockAcquireTime = 0;
private boolean mWakeLockGpsReceived = true;
PowerStateBroadcastReceiver powerStateReceiver = new PowerStateBroadcastReceiver();
IntentFilter intentFilter = new IntentFilter();
intentFilter.addAction(ALARM_INTENT);
- intentFilter.addAction(Intent.ACTION_SCREEN_OFF);
- intentFilter.addAction(Intent.ACTION_SCREEN_ON);
intentFilter.addAction(Intent.ACTION_PACKAGE_REMOVED);
intentFilter.addAction(Intent.ACTION_PACKAGE_RESTARTED);
context.registerReceiver(powerStateReceiver, intentFilter);
if (listeners > 0) {
p.setMinTime(getMinTimeLocked(provider));
p.enableLocationTracking(true);
- updateWakelockStatusLocked(mScreenOn);
+ updateWakelockStatusLocked();
}
} else {
p.enableLocationTracking(false);
p.disable();
- updateWakelockStatusLocked(mScreenOn);
+ updateWakelockStatusLocked();
}
}
long minTimeForProvider = getMinTimeLocked(provider);
impl.setMinTime(minTimeForProvider);
impl.enableLocationTracking(true);
- updateWakelockStatusLocked(mScreenOn);
+ updateWakelockStatusLocked();
} else {
try {
// Notify the listener that updates are currently disabled
}
}
- updateWakelockStatusLocked(mScreenOn);
+ updateWakelockStatusLocked();
} finally {
Binder.restoreCallingIdentity(identity);
}
return;
}
- // Process the location fix if the screen is on or we're holding a wakelock
- if (mScreenOn || (mWakeLockAcquireTime != 0)) {
+ // Process the location fix if we're holding a wakelock
+ if (mWakeLockAcquireTime != 0) {
handleLocationChangedLocked(location);
}
// Update wakelock status so the next alarm is set before releasing wakelock
synchronized (mLock) {
- updateWakelockStatusLocked(mScreenOn);
+ updateWakelockStatusLocked();
releaseWakeLockLocked();
}
}
// is finished.
acquireWakeLockLocked();
}
-
- } else if (action.equals(Intent.ACTION_SCREEN_OFF)) {
- log("PowerStateBroadcastReceiver: Screen off");
- synchronized (mLock) {
- updateWakelockStatusLocked(false);
- }
-
- } else if (action.equals(Intent.ACTION_SCREEN_ON)) {
- log("PowerStateBroadcastReceiver: Screen on");
- synchronized (mLock) {
- updateWakelockStatusLocked(true);
- }
} else if (action.equals(Intent.ACTION_PACKAGE_REMOVED)
|| action.equals(Intent.ACTION_PACKAGE_RESTARTED)) {
synchronized (mLock) {
// Wake locks
- private void updateWakelockStatusLocked(boolean screenOn) {
- log("updateWakelockStatus(): " + screenOn);
+ private void updateWakelockStatusLocked() {
+ log("updateWakelockStatus()");
long callerId = Binder.clearCallingIdentity();
minTime = Math.min(mGpsLocationProvider.getMinTime(), minTime);
}
- mScreenOn = screenOn;
-
PendingIntent sender =
PendingIntent.getBroadcast(mContext, 0, new Intent(ALARM_INTENT), 0);
log("Cancelling existing alarm");
mAlarmManager.cancel(sender);
- if (needsLock && !mScreenOn) {
+ if (needsLock) {
long now = SystemClock.elapsedRealtime();
mAlarmManager.set(
AlarmManager.ELAPSED_REALTIME_WAKEUP, now + minTime, sender);
pw.println(" mNetworkLocationProvider=" + mNetworkLocationProvider);
pw.println(" mCollector=" + mCollector);
pw.println(" mAlarmInterval=" + mAlarmInterval
- + " mScreenOn=" + mScreenOn
+ " mWakeLockAcquireTime=" + mWakeLockAcquireTime);
pw.println(" mWakeLockGpsReceived=" + mWakeLockGpsReceived
+ " mWakeLockNetworkReceived=" + mWakeLockNetworkReceived);