GPS打开电源之后设置1分钟的超时,超时后自动关闭

serial
Matthew 1 year ago
parent 5dff91cfc9
commit 6d0d43dd98

@ -131,6 +131,7 @@ public class MicroPhotoService extends Service {
private ScreenActionReceiver mScreenaAtionReceiver = null;
private NetworkChangedReceiver mNetworkChangedReceiver = null;
private long mGpsTimeout = 60000; // 1 minute
private PendingIntent mPreviousGpsTimer = null;
private ServiceHandler mHander = null;
@ -373,7 +374,11 @@ public class MicroPhotoService extends Service {
String md5 = intent.getStringExtra("md5");
} else if (TextUtils.equals(ACTION_GPS_TIMEOUT, action)) {
mService.mPreviousGpsTimer = null;
mService.mLocationManager.removeUpdates(mService.mLocationListener);
try {
mService.mLocationManager.removeUpdates(mService.mLocationListener);
} catch (Exception ex) {
ex.printStackTrace();
}
mService.enableGps(false);
}
}
@ -1076,6 +1081,35 @@ public class MicroPhotoService extends Service {
*/
}
public void enableGps(boolean enabled) {
if (enabled) {
try {
AlarmManager alarmManager = (AlarmManager) getSystemService(ALARM_SERVICE);
if (mPreviousGpsTimer != null) {
alarmManager.cancel(mPreviousGpsTimer);
mPreviousGpsTimer = null;
}
Intent intent = new Intent();
intent.setAction(ACTION_GPS_TIMEOUT);
mPreviousGpsTimer = PendingIntent.getBroadcast(this, 0, intent, 0);
alarmManager.setExactAndAllowWhileIdle(AlarmManager.ELAPSED_REALTIME_WAKEUP, SystemClock.elapsedRealtime() + mGpsTimeout, mPreviousGpsTimer);
} catch (Exception ex) {
ex.printStackTrace();
}
} else {
if (mPreviousGpsTimer != null) {
try {
AlarmManager alarmManager = (AlarmManager) getSystemService(ALARM_SERVICE);
alarmManager.cancel(mPreviousGpsTimer);
} catch (Exception ex) {
ex.printStackTrace();
} finally {
mPreviousGpsTimer = null;
}
}
}
SysApi.enableGps(getApplicationContext(), enabled);
}

Loading…
Cancel
Save