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 ScreenActionReceiver mScreenaAtionReceiver = null;
private NetworkChangedReceiver mNetworkChangedReceiver = null; private NetworkChangedReceiver mNetworkChangedReceiver = null;
private long mGpsTimeout = 60000; // 1 minute
private PendingIntent mPreviousGpsTimer = null; private PendingIntent mPreviousGpsTimer = null;
private ServiceHandler mHander = null; private ServiceHandler mHander = null;
@ -373,7 +374,11 @@ public class MicroPhotoService extends Service {
String md5 = intent.getStringExtra("md5"); String md5 = intent.getStringExtra("md5");
} else if (TextUtils.equals(ACTION_GPS_TIMEOUT, action)) { } else if (TextUtils.equals(ACTION_GPS_TIMEOUT, action)) {
mService.mPreviousGpsTimer = null; mService.mPreviousGpsTimer = null;
try {
mService.mLocationManager.removeUpdates(mService.mLocationListener); mService.mLocationManager.removeUpdates(mService.mLocationListener);
} catch (Exception ex) {
ex.printStackTrace();
}
mService.enableGps(false); mService.enableGps(false);
} }
} }
@ -1076,6 +1081,35 @@ public class MicroPhotoService extends Service {
*/ */
} }
public void enableGps(boolean enabled) { 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); SysApi.enableGps(getApplicationContext(), enabled);
} }

Loading…
Cancel
Save