Skip to content

Commit 221c7e1

Browse files
committed
Adjust alarm manager to use inexact alarm if background running/unoptimized battery not allowed
1 parent a507d60 commit 221c7e1

File tree

1 file changed

+9
-8
lines changed

1 file changed

+9
-8
lines changed

gpslogger/src/main/java/com/mendhak/gpslogger/GpsLoggingService.java

Lines changed: 9 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -32,6 +32,7 @@
3232

3333
import androidx.annotation.NonNull;
3434
import androidx.annotation.Nullable;
35+
import androidx.core.app.AlarmManagerCompat;
3536
import androidx.core.app.NotificationCompat;
3637
import androidx.core.app.TaskStackBuilder;
3738
import android.text.Html;
@@ -1092,21 +1093,21 @@ private void stopAlarm() {
10921093
}
10931094

10941095
private void setAlarmForNextPoint() {
1095-
LOG.debug("Set alarm for " + preferenceHelper.getMinimumLoggingInterval() + " seconds");
1096-
10971096
Intent i = new Intent(this, GpsLoggingService.class);
10981097
i.putExtra(IntentConstants.GET_NEXT_POINT, true);
10991098
PendingIntent pi = PendingIntent.getService(this, 0, i, PendingIntent.FLAG_MUTABLE);
11001099
nextPointAlarmManager.cancel(pi);
1101-
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
1102-
nextPointAlarmManager.setExactAndAllowWhileIdle(AlarmManager.ELAPSED_REALTIME_WAKEUP,
1103-
SystemClock.elapsedRealtime() + preferenceHelper.getMinimumLoggingInterval() * 1000, pi);
1100+
1101+
if(AlarmManagerCompat.canScheduleExactAlarms(nextPointAlarmManager)){
1102+
LOG.debug("Setting exact alarm for {}s", preferenceHelper.getMinimumLoggingInterval());
1103+
AlarmManagerCompat.setExactAndAllowWhileIdle(nextPointAlarmManager, AlarmManager.ELAPSED_REALTIME_WAKEUP,
1104+
SystemClock.elapsedRealtime() + preferenceHelper.getMinimumLoggingInterval() * 1000L, pi);
11041105
}
11051106
else {
1106-
nextPointAlarmManager.set(AlarmManager.ELAPSED_REALTIME_WAKEUP,
1107-
SystemClock.elapsedRealtime() + preferenceHelper.getMinimumLoggingInterval() * 1000, pi);
1107+
LOG.debug("Setting inexact alarm for {}s (exact alarm disallowed/not available)", preferenceHelper.getMinimumLoggingInterval());
1108+
AlarmManagerCompat.setAndAllowWhileIdle(nextPointAlarmManager, AlarmManager.ELAPSED_REALTIME_WAKEUP,
1109+
SystemClock.elapsedRealtime() + preferenceHelper.getMinimumLoggingInterval() * 1000L, pi);
11081110
}
1109-
11101111
}
11111112

11121113

0 commit comments

Comments
 (0)