diff --git a/app/src/main/java/org/traccar/client/MainFragment.java b/app/src/main/java/org/traccar/client/MainFragment.java index a09bd01..6b7bf0d 100644 --- a/app/src/main/java/org/traccar/client/MainFragment.java +++ b/app/src/main/java/org/traccar/client/MainFragment.java @@ -66,6 +66,7 @@ public class MainFragment extends PreferenceFragmentCompat implements OnSharedPr public static final String KEY_ACCURACY = "accuracy"; public static final String KEY_STATUS = "status"; public static final String KEY_BUFFER = "buffer"; + public static final String KEY_WAKELOCK = "wakelock"; private static final int PERMISSIONS_REQUEST_LOCATION = 2; @@ -206,6 +207,7 @@ public class MainFragment extends PreferenceFragmentCompat implements OnSharedPr findPreference(KEY_ANGLE).setEnabled(enabled); findPreference(KEY_ACCURACY).setEnabled(enabled); findPreference(KEY_BUFFER).setEnabled(enabled); + findPreference(KEY_WAKELOCK).setEnabled(enabled); } @Override diff --git a/app/src/main/java/org/traccar/client/TrackingController.java b/app/src/main/java/org/traccar/client/TrackingController.java index fd3a13b..a50d71f 100644 --- a/app/src/main/java/org/traccar/client/TrackingController.java +++ b/app/src/main/java/org/traccar/client/TrackingController.java @@ -25,7 +25,6 @@ public class TrackingController implements PositionProvider.PositionListener, Ne private static final String TAG = TrackingController.class.getSimpleName(); private static final int RETRY_DELAY = 30 * 1000; - private static final int WAKE_LOCK_TIMEOUT = 120 * 1000; private boolean isOnline; private boolean isWaiting; diff --git a/app/src/main/java/org/traccar/client/TrackingService.java b/app/src/main/java/org/traccar/client/TrackingService.java index eada89a..83b3cff 100644 --- a/app/src/main/java/org/traccar/client/TrackingService.java +++ b/app/src/main/java/org/traccar/client/TrackingService.java @@ -29,6 +29,7 @@ import androidx.core.app.NotificationCompat; import androidx.core.content.ContextCompat; import android.os.PowerManager; +import android.preference.PreferenceManager; import android.util.Log; public class TrackingService extends Service { @@ -87,9 +88,11 @@ public class TrackingService extends Service { if (ContextCompat.checkSelfPermission(this, android.Manifest.permission.ACCESS_FINE_LOCATION) == PackageManager.PERMISSION_GRANTED) { - PowerManager powerManager = (PowerManager) getSystemService(Context.POWER_SERVICE); - wakeLock = powerManager.newWakeLock(PowerManager.PARTIAL_WAKE_LOCK, getClass().getName()); - wakeLock.acquire(); + if (PreferenceManager.getDefaultSharedPreferences(this).getBoolean(MainFragment.KEY_WAKELOCK, true)) { + PowerManager powerManager = (PowerManager) getSystemService(Context.POWER_SERVICE); + wakeLock = powerManager.newWakeLock(PowerManager.PARTIAL_WAKE_LOCK, getClass().getName()); + wakeLock.acquire(); + } trackingController = new TrackingController(this); trackingController.start(); diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index 180e398..64caa03 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -23,6 +23,9 @@ Offline buffering Buffering off Buffering on + Wake lock + Wake lock off + Wake lock on Location accuracy Desired location accuracy High diff --git a/app/src/main/res/xml/preferences.xml b/app/src/main/res/xml/preferences.xml index 0f0f2e6..692be0e 100644 --- a/app/src/main/res/xml/preferences.xml +++ b/app/src/main/res/xml/preferences.xml @@ -56,4 +56,11 @@ android:summaryOn="@string/settings_buffer_on_summary" android:title="@string/settings_buffer" /> + +