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" />
+
+