Add preference "Allow sleep at homepoints and in deadzones".
This commit is contained in:
parent
eec0caf59d
commit
a0e1fb8d8b
4 changed files with 30 additions and 5 deletions
|
@ -56,6 +56,7 @@ object Keys {
|
||||||
const val PREF_LOCATION_NETWORK: String = "prefLocationNetwork"
|
const val PREF_LOCATION_NETWORK: String = "prefLocationNetwork"
|
||||||
const val PREF_LOCATION_GPS: String = "prefLocationGPS"
|
const val PREF_LOCATION_GPS: String = "prefLocationGPS"
|
||||||
const val PREF_OMIT_RESTS: String = "prefOmitRests"
|
const val PREF_OMIT_RESTS: String = "prefOmitRests"
|
||||||
|
const val PREF_ALLOW_SLEEP: String = "prefAllowSleep"
|
||||||
const val PREF_DEVICE_ID: String = "prefDeviceID"
|
const val PREF_DEVICE_ID: String = "prefDeviceID"
|
||||||
const val PREF_DATABASE_DIRECTORY: String = "prefDatabaseDirectory"
|
const val PREF_DATABASE_DIRECTORY: String = "prefDatabaseDirectory"
|
||||||
|
|
||||||
|
@ -104,6 +105,7 @@ object Keys {
|
||||||
const val DEFAULT_THRESHOLD_DISTANCE: Float = 15f // 15 meters
|
const val DEFAULT_THRESHOLD_DISTANCE: Float = 15f // 15 meters
|
||||||
const val DEFAULT_ZOOM_LEVEL: Double = 16.0
|
const val DEFAULT_ZOOM_LEVEL: Double = 16.0
|
||||||
const val DEFAULT_OMIT_RESTS: Boolean = true
|
const val DEFAULT_OMIT_RESTS: Boolean = true
|
||||||
|
const val DEFAULT_ALLOW_SLEEP: Boolean = true
|
||||||
const val ALTITUDE_MEASUREMENT_ERROR_THRESHOLD = 10 // altitude changes of 10 meter or more (per 15 seconds) are being discarded
|
const val ALTITUDE_MEASUREMENT_ERROR_THRESHOLD = 10 // altitude changes of 10 meter or more (per 15 seconds) are being discarded
|
||||||
|
|
||||||
// notification
|
// notification
|
||||||
|
|
|
@ -22,8 +22,6 @@ package net.voussoir.trkpt
|
||||||
|
|
||||||
import YesNoDialog
|
import YesNoDialog
|
||||||
import android.app.Activity
|
import android.app.Activity
|
||||||
import android.content.ClipData
|
|
||||||
import android.content.ClipboardManager
|
|
||||||
import android.content.Context
|
import android.content.Context
|
||||||
import android.content.Intent
|
import android.content.Intent
|
||||||
import android.net.Uri
|
import android.net.Uri
|
||||||
|
@ -34,7 +32,6 @@ import android.provider.DocumentsContract
|
||||||
import android.provider.Settings
|
import android.provider.Settings
|
||||||
import android.util.Log
|
import android.util.Log
|
||||||
import android.view.View
|
import android.view.View
|
||||||
import android.widget.Toast
|
|
||||||
import androidx.activity.result.contract.ActivityResultContracts
|
import androidx.activity.result.contract.ActivityResultContracts
|
||||||
import androidx.preference.EditTextPreference
|
import androidx.preference.EditTextPreference
|
||||||
import androidx.preference.ListPreference
|
import androidx.preference.ListPreference
|
||||||
|
@ -132,6 +129,17 @@ class SettingsFragment : PreferenceFragmentCompat(), YesNoDialog.YesNoDialogList
|
||||||
preferenceCategoryGeneral.contains(preferenceOmitRests)
|
preferenceCategoryGeneral.contains(preferenceOmitRests)
|
||||||
screen.addPreference(preferenceOmitRests)
|
screen.addPreference(preferenceOmitRests)
|
||||||
|
|
||||||
|
val prefAllowSleep = SwitchPreferenceCompat(activity as Context)
|
||||||
|
prefAllowSleep.isSingleLineTitle = false
|
||||||
|
prefAllowSleep.title = "Allow sleep at homepoints and in deadzones"
|
||||||
|
prefAllowSleep.setIcon(R.drawable.ic_sleep_24dp)
|
||||||
|
prefAllowSleep.key = Keys.PREF_ALLOW_SLEEP
|
||||||
|
prefAllowSleep.summaryOn = "trkpt will fall asleep near homepoints or when location fixes are completely unavailable. The motion sensor will wake it."
|
||||||
|
prefAllowSleep.summaryOff = "trkpt will never fall asleep, tracking will always run at full power."
|
||||||
|
prefAllowSleep.setDefaultValue(Keys.DEFAULT_ALLOW_SLEEP)
|
||||||
|
preferenceCategoryGeneral.contains(prefAllowSleep)
|
||||||
|
screen.addPreference(prefAllowSleep)
|
||||||
|
|
||||||
val preferenceDeviceID = EditTextPreference(activity as Context)
|
val preferenceDeviceID = EditTextPreference(activity as Context)
|
||||||
preferenceDeviceID.title = getString(R.string.pref_device_id)
|
preferenceDeviceID.title = getString(R.string.pref_device_id)
|
||||||
preferenceDeviceID.setIcon(R.drawable.ic_smartphone_24dp)
|
preferenceDeviceID.setIcon(R.drawable.ic_smartphone_24dp)
|
||||||
|
|
|
@ -60,6 +60,7 @@ class TrackerService: Service()
|
||||||
var trackingState: Int = Keys.STATE_TRACKING_STOPPED
|
var trackingState: Int = Keys.STATE_TRACKING_STOPPED
|
||||||
var useImperial: Boolean = false
|
var useImperial: Boolean = false
|
||||||
var omitRests: Boolean = true
|
var omitRests: Boolean = true
|
||||||
|
var allow_sleep: Boolean = true
|
||||||
var device_id: String = random_device_id()
|
var device_id: String = random_device_id()
|
||||||
var currentBestLocation: Location = getDefaultLocation()
|
var currentBestLocation: Location = getDefaultLocation()
|
||||||
var lastCommit: Long = 0
|
var lastCommit: Long = 0
|
||||||
|
@ -282,7 +283,7 @@ class TrackerService: Service()
|
||||||
// that immediately fetches a new location.
|
// that immediately fetches a new location.
|
||||||
// If we cannot rely on the motion sensor, then don't sleep!
|
// If we cannot rely on the motion sensor, then don't sleep!
|
||||||
}
|
}
|
||||||
else if ((System.currentTimeMillis() - arrived_at_home) > Keys.ONE_MINUTE_IN_MILLISECONDS)
|
else if (allow_sleep && (System.currentTimeMillis() - arrived_at_home) > Keys.ONE_MINUTE_IN_MILLISECONDS)
|
||||||
{
|
{
|
||||||
Log.i("VOUSSOIR", "Staying at home, sleeping.")
|
Log.i("VOUSSOIR", "Staying at home, sleeping.")
|
||||||
reset_location_listeners(interval=LOCATION_INTERVAL_SLEEP)
|
reset_location_listeners(interval=LOCATION_INTERVAL_SLEEP)
|
||||||
|
@ -497,6 +498,7 @@ class TrackerService: Service()
|
||||||
device_id = PreferencesHelper.load_device_id()
|
device_id = PreferencesHelper.load_device_id()
|
||||||
useImperial = PreferencesHelper.loadUseImperialUnits()
|
useImperial = PreferencesHelper.loadUseImperialUnits()
|
||||||
omitRests = PreferencesHelper.loadOmitRests()
|
omitRests = PreferencesHelper.loadOmitRests()
|
||||||
|
allow_sleep = PreferencesHelper.loadAllowSleep()
|
||||||
locationManager = getSystemService(Context.LOCATION_SERVICE) as LocationManager
|
locationManager = getSystemService(Context.LOCATION_SERVICE) as LocationManager
|
||||||
notificationManager = getSystemService(Context.NOTIFICATION_SERVICE) as NotificationManager
|
notificationManager = getSystemService(Context.NOTIFICATION_SERVICE) as NotificationManager
|
||||||
notification_builder = NotificationCompat.Builder(this, Keys.NOTIFICATION_CHANNEL_RECORDING)
|
notification_builder = NotificationCompat.Builder(this, Keys.NOTIFICATION_CHANNEL_RECORDING)
|
||||||
|
@ -627,6 +629,14 @@ class TrackerService: Service()
|
||||||
{
|
{
|
||||||
omitRests = PreferencesHelper.loadOmitRests()
|
omitRests = PreferencesHelper.loadOmitRests()
|
||||||
}
|
}
|
||||||
|
Keys.PREF_ALLOW_SLEEP ->
|
||||||
|
{
|
||||||
|
allow_sleep = PreferencesHelper.loadAllowSleep()
|
||||||
|
if (! allow_sleep && location_interval != LOCATION_INTERVAL_FULL_POWER)
|
||||||
|
{
|
||||||
|
reset_location_listeners(LOCATION_INTERVAL_FULL_POWER)
|
||||||
|
}
|
||||||
|
}
|
||||||
Keys.PREF_DEVICE_ID ->
|
Keys.PREF_DEVICE_ID ->
|
||||||
{
|
{
|
||||||
device_id = PreferencesHelper.load_device_id()
|
device_id = PreferencesHelper.load_device_id()
|
||||||
|
@ -651,6 +661,7 @@ class TrackerService: Service()
|
||||||
struggletime = 4 * Keys.ONE_MINUTE_IN_MILLISECONDS
|
struggletime = 4 * Keys.ONE_MINUTE_IN_MILLISECONDS
|
||||||
}
|
}
|
||||||
if (
|
if (
|
||||||
|
allow_sleep &&
|
||||||
trackingState == Keys.STATE_TRACKING_ACTIVE &&
|
trackingState == Keys.STATE_TRACKING_ACTIVE &&
|
||||||
location_interval != LOCATION_INTERVAL_GIVE_UP &&
|
location_interval != LOCATION_INTERVAL_GIVE_UP &&
|
||||||
significant_motion_sensor != null &&
|
significant_motion_sensor != null &&
|
||||||
|
|
|
@ -98,7 +98,11 @@ object PreferencesHelper
|
||||||
}
|
}
|
||||||
|
|
||||||
fun loadOmitRests(): Boolean {
|
fun loadOmitRests(): Boolean {
|
||||||
return sharedPreferences.getBoolean(Keys.PREF_OMIT_RESTS, true)
|
return sharedPreferences.getBoolean(Keys.PREF_OMIT_RESTS, Keys.DEFAULT_OMIT_RESTS)
|
||||||
|
}
|
||||||
|
|
||||||
|
fun loadAllowSleep(): Boolean {
|
||||||
|
return sharedPreferences.getBoolean(Keys.PREF_ALLOW_SLEEP, Keys.DEFAULT_ALLOW_SLEEP)
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Loads the state of a map */
|
/* Loads the state of a map */
|
||||||
|
|
Loading…
Reference in a new issue