From 6d0d43dd983a7ed79fdea074bdea7b8912da90b7 Mon Sep 17 00:00:00 2001 From: Matthew Date: Mon, 6 May 2024 14:29:33 +0800 Subject: [PATCH] =?UTF-8?q?GPS=E6=89=93=E5=BC=80=E7=94=B5=E6=BA=90?= =?UTF-8?q?=E4=B9=8B=E5=90=8E=E8=AE=BE=E7=BD=AE1=E5=88=86=E9=92=9F?= =?UTF-8?q?=E7=9A=84=E8=B6=85=E6=97=B6=EF=BC=8C=E8=B6=85=E6=97=B6=E5=90=8E?= =?UTF-8?q?=E8=87=AA=E5=8A=A8=E5=85=B3=E9=97=AD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../com/xypower/mpapp/MicroPhotoService.java | 36 ++++++++++++++++++- 1 file changed, 35 insertions(+), 1 deletion(-) diff --git a/app/src/main/java/com/xypower/mpapp/MicroPhotoService.java b/app/src/main/java/com/xypower/mpapp/MicroPhotoService.java index 51054c7b..264eab6f 100644 --- a/app/src/main/java/com/xypower/mpapp/MicroPhotoService.java +++ b/app/src/main/java/com/xypower/mpapp/MicroPhotoService.java @@ -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); }