diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml
index 990823e..69b0e73 100644
--- a/app/src/main/AndroidManifest.xml
+++ b/app/src/main/AndroidManifest.xml
@@ -14,6 +14,7 @@
+
diff --git a/app/src/main/java/org/y20k/trackbook/Keys.kt b/app/src/main/java/org/y20k/trackbook/Keys.kt
index 4e905f5..bba5564 100644
--- a/app/src/main/java/org/y20k/trackbook/Keys.kt
+++ b/app/src/main/java/org/y20k/trackbook/Keys.kt
@@ -53,9 +53,9 @@ object Keys {
const val PREF_MAP_ZOOM_LEVEL: String = "prefMapZoomLevel"
const val PREF_TRACKING_STATE: String = "prefTrackingState"
const val PREF_USE_IMPERIAL_UNITS: String = "prefUseImperialUnits"
- const val PREF_GPS_ONLY: String = "prefGpsOnly"
+ const val PREF_LOCATION_NETWORK: String = "prefLocationNetwork"
+ const val PREF_LOCATION_GPS: String = "prefLocationGPS"
const val PREF_OMIT_RESTS: String = "prefOmitRests"
- const val PREF_COMMIT_INTERVAL: String = "prefCommitInterval"
const val PREF_DEVICE_ID: String = "prefDeviceID"
const val PREF_DATABASE_DIRECTORY: String = "prefDatabaseDirectory"
diff --git a/app/src/main/java/org/y20k/trackbook/MainActivity.kt b/app/src/main/java/org/y20k/trackbook/MainActivity.kt
index c486eca..2d33f13 100644
--- a/app/src/main/java/org/y20k/trackbook/MainActivity.kt
+++ b/app/src/main/java/org/y20k/trackbook/MainActivity.kt
@@ -18,12 +18,16 @@ package org.y20k.trackbook
import android.Manifest
import android.app.Activity
+import android.content.Intent
import android.content.SharedPreferences
import android.content.pm.PackageManager
+import android.net.Uri
import android.os.Build
import android.os.Bundle
+import android.os.PowerManager
import android.os.StrictMode
import android.os.StrictMode.VmPolicy
+import android.provider.Settings
import android.util.Log
import androidx.appcompat.app.AppCompatActivity
import androidx.core.content.ContextCompat
@@ -152,7 +156,7 @@ class MainActivity: AppCompatActivity()
override fun onRequestPermissionsResult(
requestCode: Int,
permissions: Array,
- grantResults: IntArray
+ grantResults: IntArray,
)
{
super.onRequestPermissionsResult(requestCode, permissions, grantResults)
diff --git a/app/src/main/java/org/y20k/trackbook/MapFragment.kt b/app/src/main/java/org/y20k/trackbook/MapFragment.kt
index e2bbb5c..00f2ad3 100644
--- a/app/src/main/java/org/y20k/trackbook/MapFragment.kt
+++ b/app/src/main/java/org/y20k/trackbook/MapFragment.kt
@@ -309,51 +309,24 @@ class MapFragment : Fragment()
}
private val requestLocationPermissionLauncher = registerForActivityResult(RequestPermission()) { isGranted: Boolean ->
- if (isGranted) {
+ if (isGranted)
+ {
// permission was granted - re-bind service
activity?.unbindService(connection)
activity?.bindService(Intent(activity, TrackerService::class.java), connection, Context.BIND_AUTO_CREATE)
LogHelper.i(TAG, "Request result: Location permission has been granted.")
- } else {
+ }
+ else
+ {
// permission denied - unbind service
activity?.unbindService(connection)
}
toggleLocationErrorBar(gpsProviderActive, networkProviderActive)
}
- /* Register the permission launcher for starting the tracking service */
- private val startTrackingPermissionLauncher = registerForActivityResult(RequestPermission()) { isGranted: Boolean ->
- if (isGranted)
- {
- LogHelper.i(TAG, "Request result: Activity Recognition permission has been granted.")
- }
- else
- {
- LogHelper.i(TAG, "Request result: Activity Recognition permission has NOT been granted.")
- }
- // start service via intent so that it keeps running after unbind
- startTrackerService()
- trackerService.startTracking()
- }
-
/* Start recording waypoints */
private fun startTracking() {
- // request activity recognition permission on Android Q+ if denied
- if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.Q && ContextCompat.checkSelfPermission(activity as Context, Manifest.permission.ACTIVITY_RECOGNITION) == PackageManager.PERMISSION_DENIED)
- {
- startTrackingPermissionLauncher.launch(Manifest.permission.ACTIVITY_RECOGNITION)
- }
- else
- {
- // start service via intent so that it keeps running after unbind
- startTrackerService()
- trackerService.startTracking()
- }
- }
-
- /* Start tracker service */
- private fun startTrackerService()
- {
+ // start service via intent so that it keeps running after unbind
val intent = Intent(activity, TrackerService::class.java)
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {
// ... start service in foreground to prevent it being killed on Oreo
@@ -361,8 +334,10 @@ class MapFragment : Fragment()
} else {
activity?.startService(intent)
}
+ trackerService.startTracking()
}
+
/* Handles state when service is being unbound */
private fun handleServiceUnbind()
{
@@ -377,7 +352,7 @@ class MapFragment : Fragment()
private fun handleTrackingManagementMenu()
{
when (trackingState) {
- Keys.STATE_TRACKING_ACTIVE -> trackerService.pauseTracking()
+ Keys.STATE_TRACKING_ACTIVE -> trackerService.stopTracking()
Keys.STATE_TRACKING_STOPPED -> startTracking()
}
}
@@ -390,10 +365,10 @@ class MapFragment : Fragment()
if (activity != null)
{
trackingState = PreferencesHelper.loadTrackingState()
- update_main_button()
}
}
}
+ update_main_button()
}
fun centerMap(location: Location, animated: Boolean = false) {
@@ -598,16 +573,22 @@ class MapFragment : Fragment()
}
}
- fun toggleLocationErrorBar(gpsProviderActive: Boolean, networkProviderActive: Boolean) {
- if (ContextCompat.checkSelfPermission(requireContext(), Manifest.permission.ACCESS_FINE_LOCATION) == PackageManager.PERMISSION_DENIED) {
+ fun toggleLocationErrorBar(gpsProviderActive: Boolean, networkProviderActive: Boolean)
+ {
+ if (ContextCompat.checkSelfPermission(requireContext(), Manifest.permission.ACCESS_FINE_LOCATION) == PackageManager.PERMISSION_DENIED)
+ {
// CASE: Location permission not granted
locationErrorBar.setText(R.string.snackbar_message_location_permission_denied)
if (!locationErrorBar.isShown) locationErrorBar.show()
- } else if (!gpsProviderActive && !networkProviderActive) {
+ }
+ else if (!gpsProviderActive && !networkProviderActive)
+ {
// CASE: Location setting is off
locationErrorBar.setText(R.string.snackbar_message_location_offline)
if (!locationErrorBar.isShown) locationErrorBar.show()
- } else {
+ }
+ else
+ {
if (locationErrorBar.isShown) locationErrorBar.dismiss()
}
}
diff --git a/app/src/main/java/org/y20k/trackbook/SettingsFragment.kt b/app/src/main/java/org/y20k/trackbook/SettingsFragment.kt
index 685d378..2c0eb52 100644
--- a/app/src/main/java/org/y20k/trackbook/SettingsFragment.kt
+++ b/app/src/main/java/org/y20k/trackbook/SettingsFragment.kt
@@ -25,9 +25,12 @@ import android.content.Intent
import android.net.Uri
import android.os.Build
import android.os.Bundle
+import android.os.PowerManager
import android.provider.DocumentsContract
+import android.provider.Settings
import android.util.Log
import android.view.View
+import android.widget.Button
import android.widget.Toast
import androidx.activity.result.contract.ActivityResultContracts
import androidx.preference.EditTextPreference
@@ -71,17 +74,27 @@ class SettingsFragment : PreferenceFragmentCompat(), YesNoDialog.YesNoDialogList
preferenceCategoryGeneral.title = getString(R.string.pref_general_title)
screen.addPreference(preferenceCategoryGeneral)
- // set up "Restrict to GPS" preference
- val preferenceGpsOnly = SwitchPreferenceCompat(activity as Context)
- preferenceGpsOnly.isSingleLineTitle = false
- preferenceGpsOnly.title = getString(R.string.pref_gps_only_title)
- preferenceGpsOnly.setIcon(R.drawable.ic_gps_24dp)
- preferenceGpsOnly.key = Keys.PREF_GPS_ONLY
- preferenceGpsOnly.summaryOn = getString(R.string.pref_gps_only_summary_gps_only)
- preferenceGpsOnly.summaryOff = getString(R.string.pref_gps_only_summary_gps_and_network)
- preferenceGpsOnly.setDefaultValue(false)
- preferenceCategoryGeneral.contains(preferenceGpsOnly)
- screen.addPreference(preferenceGpsOnly)
+ val prefLocationGPS = SwitchPreferenceCompat(activity as Context)
+ prefLocationGPS.isSingleLineTitle = false
+ prefLocationGPS.title = getString(R.string.pref_location_gps_title)
+ prefLocationGPS.setIcon(R.drawable.ic_gps_24dp)
+ prefLocationGPS.key = Keys.PREF_LOCATION_GPS
+ prefLocationGPS.summaryOn = getString(R.string.pref_location_gps_summary_on)
+ prefLocationGPS.summaryOff = getString(R.string.pref_location_gps_summary_off)
+ prefLocationGPS.setDefaultValue(true)
+ preferenceCategoryGeneral.contains(prefLocationGPS)
+ screen.addPreference(prefLocationGPS)
+
+ val prefLocationNetwork = SwitchPreferenceCompat(activity as Context)
+ prefLocationNetwork.isSingleLineTitle = false
+ prefLocationNetwork.title = getString(R.string.pref_location_network_title)
+ prefLocationNetwork.setIcon(R.drawable.ic_gps_24dp)
+ prefLocationNetwork.key = Keys.PREF_LOCATION_NETWORK
+ prefLocationNetwork.summaryOn = getString(R.string.pref_location_network_summary_on)
+ prefLocationNetwork.summaryOff = getString(R.string.pref_location_network_summary_off)
+ prefLocationNetwork.setDefaultValue(false)
+ preferenceCategoryGeneral.contains(prefLocationNetwork)
+ screen.addPreference(prefLocationNetwork)
// set up "Use Imperial Measurements" preference
val preferenceImperialMeasurementUnits = SwitchPreferenceCompat(activity as Context)
@@ -114,7 +127,6 @@ class SettingsFragment : PreferenceFragmentCompat(), YesNoDialog.YesNoDialogList
}
screen.addPreference(preferenceThemeSelection)
- // set up "Recording Accuracy" preference
val preferenceOmitRests = SwitchPreferenceCompat(activity as Context)
preferenceOmitRests.isSingleLineTitle = false
preferenceOmitRests.title = getString(R.string.pref_omit_rests_title)
@@ -178,10 +190,26 @@ class SettingsFragment : PreferenceFragmentCompat(), YesNoDialog.YesNoDialogList
preferenceDatabaseFolder.summary = getString(R.string.pref_database_folder_summary) + "\n" + newValue
return@setOnPreferenceChangeListener true
}
-
preferenceCategoryGeneral.contains(preferenceDatabaseFolder)
screen.addPreference(preferenceDatabaseFolder)
+ if (Build.VERSION.SDK_INT > Build.VERSION_CODES.LOLLIPOP_MR1)
+ {
+ if (!context.getSystemService(PowerManager::class.java).isIgnoringBatteryOptimizations(context.packageName))
+ {
+ val battery_optimization_button = Preference(context)
+ battery_optimization_button.title = "Disable battery optimization"
+ battery_optimization_button.summary = "If your device kills the app, you can give this a try"
+ battery_optimization_button.setOnPreferenceClickListener {
+ val i: Intent = Intent(Settings.ACTION_REQUEST_IGNORE_BATTERY_OPTIMIZATIONS).setData(Uri.parse("package:${context.packageName}"))
+ context.startActivity(i)
+ return@setOnPreferenceClickListener true
+ }
+ preferenceCategoryGeneral.contains(battery_optimization_button)
+ screen.addPreference(battery_optimization_button)
+ }
+ }
+
val preferenceCategoryAbout = PreferenceCategory(context)
preferenceCategoryAbout.title = getString(R.string.pref_about_title)
screen.addPreference(preferenceCategoryAbout)
diff --git a/app/src/main/java/org/y20k/trackbook/Track.kt b/app/src/main/java/org/y20k/trackbook/Track.kt
index f974ed0..df848b1 100644
--- a/app/src/main/java/org/y20k/trackbook/Track.kt
+++ b/app/src/main/java/org/y20k/trackbook/Track.kt
@@ -37,7 +37,6 @@ data class Track (
var view_latitude: Double = Keys.DEFAULT_LATITUDE,
var view_longitude: Double = Keys.DEFAULT_LONGITUDE,
var trackFormatVersion: Int = Keys.CURRENT_TRACK_FORMAT_VERSION,
- var zoomLevel: Double = Keys.DEFAULT_ZOOM_LEVEL,
)
{
fun delete()
diff --git a/app/src/main/java/org/y20k/trackbook/TrackerService.kt b/app/src/main/java/org/y20k/trackbook/TrackerService.kt
index b3583f0..599ca14 100644
--- a/app/src/main/java/org/y20k/trackbook/TrackerService.kt
+++ b/app/src/main/java/org/y20k/trackbook/TrackerService.kt
@@ -23,10 +23,6 @@ import android.content.Context
import android.content.Intent
import android.content.pm.PackageManager
import android.content.SharedPreferences
-import android.hardware.Sensor
-import android.hardware.SensorEvent
-import android.hardware.SensorEventListener
-import android.hardware.SensorManager
import android.location.Location
import android.location.LocationListener
import android.location.LocationManager
@@ -35,13 +31,12 @@ import android.os.*
import android.util.Log
import androidx.core.content.ContextCompat
import java.util.*
-import kotlinx.coroutines.Runnable
import org.y20k.trackbook.helpers.*
/*
* TrackerService class
*/
-class TrackerService: Service(), SensorEventListener
+class TrackerService: Service()
{
/* Define log tag */
private val TAG: String = LogHelper.makeLogTag(TrackerService::class.java)
@@ -51,25 +46,22 @@ class TrackerService: Service(), SensorEventListener
var gpsProviderActive: Boolean = false
var networkProviderActive: Boolean = false
var useImperial: Boolean = false
- var gpsOnly: Boolean = false
+ var use_gps_location: Boolean = false
+ var use_network_location: Boolean = false
var omitRests: Boolean = true
var device_id: String = random_device_id()
- var recording_started: Date = GregorianCalendar.getInstance().time
- var commitInterval: Int = Keys.COMMIT_INTERVAL
var currentBestLocation: Location = getDefaultLocation()
var lastCommit: Long = 0
var location_min_time_ms: Long = 0
private val RECENT_TRKPT_COUNT = 7200
- var stepCountOffset: Float = 0f
lateinit var recent_trkpts: Deque
+ lateinit var recent_displacement_trkpts: Deque
var gpsLocationListenerRegistered: Boolean = false
var networkLocationListenerRegistered: Boolean = false
var bound: Boolean = false
private val binder = LocalBinder()
- private val handler: Handler = Handler(Looper.getMainLooper())
lateinit var trackbook: Trackbook
private lateinit var locationManager: LocationManager
- private lateinit var sensorManager: SensorManager
private lateinit var notificationManager: NotificationManager
private lateinit var notificationHelper: NotificationHelper
private lateinit var gpsLocationListener: LocationListener
@@ -77,6 +69,12 @@ class TrackerService: Service(), SensorEventListener
private fun addGpsLocationListener()
{
+ if (! use_gps_location)
+ {
+ LogHelper.v(TAG, "Skipping GPS listener.")
+ return
+ }
+
if (gpsLocationListenerRegistered)
{
LogHelper.v(TAG, "GPS location listener has already been added.")
@@ -109,9 +107,9 @@ class TrackerService: Service(), SensorEventListener
private fun addNetworkLocationListener()
{
- if (gpsOnly)
+ if (! use_network_location)
{
- LogHelper.v(TAG, "Skipping Network listener. User prefers GPS-only.")
+ LogHelper.v(TAG, "Skipping Network listener.")
return
}
@@ -167,13 +165,18 @@ class TrackerService: Service(), SensorEventListener
val trkpt = Trkpt(location=location)
trackbook.database.insert_trkpt(device_id, trkpt)
recent_trkpts.add(trkpt)
-
while (recent_trkpts.size > RECENT_TRKPT_COUNT)
{
recent_trkpts.removeFirst()
}
- if (now - lastCommit > Keys.SAVE_TEMP_TRACK_INTERVAL)
+ recent_displacement_trkpts.add(trkpt)
+ while (recent_displacement_trkpts.size > 5)
+ {
+ recent_displacement_trkpts.removeFirst()
+ }
+
+ if (now - lastCommit > Keys.COMMIT_INTERVAL)
{
trackbook.database.commit()
lastCommit = now
@@ -211,12 +214,6 @@ class TrackerService: Service(), SensorEventListener
return notification
}
- /* Overrides onAccuracyChanged from SensorEventListener */
- override fun onAccuracyChanged(sensor: Sensor?, accuracy: Int)
- {
- LogHelper.v(TAG, "Accuracy changed: $accuracy")
- }
-
/* Overrides onBind from Service */
override fun onBind(p0: Intent?): IBinder
{
@@ -235,13 +232,13 @@ class TrackerService: Service(), SensorEventListener
trackbook = (applicationContext as Trackbook)
trackbook.load_homepoints()
recent_trkpts = ArrayDeque(RECENT_TRKPT_COUNT)
- gpsOnly = PreferencesHelper.loadGpsOnly()
+ recent_displacement_trkpts = ArrayDeque(5)
+ use_gps_location = PreferencesHelper.load_location_gps()
+ use_network_location = PreferencesHelper.load_location_network()
device_id = PreferencesHelper.load_device_id()
useImperial = PreferencesHelper.loadUseImperialUnits()
omitRests = PreferencesHelper.loadOmitRests()
- commitInterval = PreferencesHelper.loadCommitInterval()
locationManager = getSystemService(Context.LOCATION_SERVICE) as LocationManager
- sensorManager = this.getSystemService(Context.SENSOR_SERVICE) as SensorManager
notificationManager = getSystemService(Context.NOTIFICATION_SERVICE) as NotificationManager
notificationHelper = NotificationHelper(this)
gpsProviderActive = isGpsEnabled(locationManager)
@@ -260,7 +257,7 @@ class TrackerService: Service(), SensorEventListener
super.onDestroy()
if (trackingState == Keys.STATE_TRACKING_ACTIVE)
{
- pauseTracking()
+ stopTracking()
}
stopForeground(STOP_FOREGROUND_REMOVE)
notificationManager.cancel(Keys.TRACKER_SERVICE_NOTIFICATION_ID) // this call was not necessary prior to Android 12
@@ -277,21 +274,6 @@ class TrackerService: Service(), SensorEventListener
addNetworkLocationListener()
}
- /* Overrides onSensorChanged from SensorEventListener */
- override fun onSensorChanged(sensorEvent: SensorEvent?) {
- var steps = 0f
- if (sensorEvent != null)
- {
- if (stepCountOffset == 0f)
- {
- // store steps previously recorded by the system
- stepCountOffset = (sensorEvent.values[0] - 1) - 0 // subtract any steps recorded during this session in case the app was killed
- }
- // calculate step count - subtract steps previously recorded
- steps = sensorEvent.values[0] - stepCountOffset
- }
- }
-
/* Overrides onStartCommand from Service */
override fun onStartCommand(intent: Intent?, flags: Int, startId: Int): Int
{
@@ -306,7 +288,7 @@ class TrackerService: Service(), SensorEventListener
}
else if (intent.action == Keys.ACTION_STOP)
{
- pauseTracking()
+ stopTracking()
}
else if (intent.action == Keys.ACTION_START)
{
@@ -360,38 +342,23 @@ class TrackerService: Service(), SensorEventListener
}
}
- private fun startStepCounter()
- {
- val stepCounterAvailable = sensorManager.registerListener(this, sensorManager.getDefaultSensor(Sensor.TYPE_STEP_COUNTER), SensorManager.SENSOR_DELAY_UI)
- if (!stepCounterAvailable)
- {
- LogHelper.w(TAG, "Pedometer sensor not available.")
- }
- }
-
- fun startTracking(newTrack: Boolean = true)
+ fun startTracking()
{
addGpsLocationListener()
addNetworkLocationListener()
trackingState = Keys.STATE_TRACKING_ACTIVE
- if (newTrack)
- {
- this.recording_started = GregorianCalendar.getInstance().time
- }
PreferencesHelper.saveTrackingState(trackingState)
- startStepCounter()
+ recent_displacement_trkpts.clear()
startForeground(Keys.TRACKER_SERVICE_NOTIFICATION_ID, displayNotification())
}
- fun pauseTracking()
+ fun stopTracking()
{
trackbook.database.commit()
trackingState = Keys.STATE_TRACKING_STOPPED
PreferencesHelper.saveTrackingState(trackingState)
-
- sensorManager.unregisterListener(this)
-
+ recent_displacement_trkpts.clear()
displayNotification()
stopForeground(STOP_FOREGROUND_DETACH)
}
@@ -399,13 +366,28 @@ class TrackerService: Service(), SensorEventListener
private val sharedPreferenceChangeListener = SharedPreferences.OnSharedPreferenceChangeListener { sharedPreferences, key ->
when (key)
{
- Keys.PREF_GPS_ONLY ->
+ Keys.PREF_LOCATION_GPS ->
{
- gpsOnly = PreferencesHelper.loadGpsOnly()
- when (gpsOnly)
+ use_gps_location = PreferencesHelper.load_location_gps()
+ if (use_gps_location)
{
- true -> removeNetworkLocationListener()
- false -> addNetworkLocationListener()
+ addGpsLocationListener()
+ }
+ else
+ {
+ removeGpsLocationListener()
+ }
+ }
+ Keys.PREF_LOCATION_NETWORK ->
+ {
+ use_network_location = PreferencesHelper.load_location_network()
+ if (use_network_location)
+ {
+ addNetworkLocationListener()
+ }
+ else
+ {
+ removeNetworkLocationListener()
}
}
Keys.PREF_USE_IMPERIAL_UNITS ->
@@ -466,11 +448,11 @@ class TrackerService: Service(), SensorEventListener
return false
}
}
- if (recent_trkpts.isEmpty())
+ if (recent_displacement_trkpts.isEmpty())
{
return true
}
- if (! isDifferentEnough(recent_trkpts.last().toLocation(), location, omitRests))
+ if (! isDifferentEnough(recent_displacement_trkpts.first().toLocation(), location, omitRests))
{
Log.i("VOUSSOIR", "Omitting due to too close to previous.")
return false
diff --git a/app/src/main/java/org/y20k/trackbook/TrackingToggleTileService.kt b/app/src/main/java/org/y20k/trackbook/TrackingToggleTileService.kt
index 65ad9ff..d020b2c 100644
--- a/app/src/main/java/org/y20k/trackbook/TrackingToggleTileService.kt
+++ b/app/src/main/java/org/y20k/trackbook/TrackingToggleTileService.kt
@@ -22,7 +22,6 @@ import android.graphics.drawable.Icon
import android.os.Build
import android.service.quicksettings.Tile
import android.service.quicksettings.TileService
-import org.y20k.trackbook.helpers.LogHelper
import org.y20k.trackbook.helpers.PreferencesHelper
/*
diff --git a/app/src/main/java/org/y20k/trackbook/helpers/DateTimeHelper.kt b/app/src/main/java/org/y20k/trackbook/helpers/DateTimeHelper.kt
index bf12975..179c5da 100644
--- a/app/src/main/java/org/y20k/trackbook/helpers/DateTimeHelper.kt
+++ b/app/src/main/java/org/y20k/trackbook/helpers/DateTimeHelper.kt
@@ -79,17 +79,6 @@ object DateTimeHelper {
return timeString
}
- /* Create sortable string for date - used for filenames */
- fun convertToSortableDateString(date: Date): String {
- val dateFormat: SimpleDateFormat = SimpleDateFormat("yyyy-MM-dd-HH-mm-ss", Locale.US)
- return dateFormat.format(date)
- }
-
- /* Creates a readable string for date - used in the UI */
- fun convertToReadableDate(date: Date, dateStyle: Int = DateFormat.LONG): String {
- return DateFormat.getDateInstance(dateStyle, Locale.getDefault()).format(date)
- }
-
/* Creates a readable string date and time - used in the UI */
fun convertToReadableDateAndTime(date: Date, dateStyle: Int = DateFormat.SHORT, timeStyle: Int = DateFormat.SHORT): String {
return "${DateFormat.getDateInstance(dateStyle, Locale.getDefault()).format(date)} ${DateFormat.getTimeInstance(timeStyle, Locale.getDefault()).format(date)}"
diff --git a/app/src/main/java/org/y20k/trackbook/helpers/LengthUnitHelper.kt b/app/src/main/java/org/y20k/trackbook/helpers/LengthUnitHelper.kt
index 338573b..05f3b44 100644
--- a/app/src/main/java/org/y20k/trackbook/helpers/LengthUnitHelper.kt
+++ b/app/src/main/java/org/y20k/trackbook/helpers/LengthUnitHelper.kt
@@ -24,13 +24,8 @@ import java.util.*
/*
* LengthUnitHelper object
*/
-object LengthUnitHelper {
-
- /* Converts for the given unit system a distance value to a readable string */
- fun convertDistanceToString(distance: Float, useImperial: Boolean = false): String {
- return convertDistanceToString(distance.toDouble(), useImperial)
- }
-
+object LengthUnitHelper
+{
/* Converts for the given unit system a distance value to a readable string */
fun convertDistanceToString(distance: Double, useImperial: Boolean = false): String {
val readableDistance: Double
diff --git a/app/src/main/java/org/y20k/trackbook/helpers/NotificationHelper.kt b/app/src/main/java/org/y20k/trackbook/helpers/NotificationHelper.kt
index 10f82b0..9d0457f 100644
--- a/app/src/main/java/org/y20k/trackbook/helpers/NotificationHelper.kt
+++ b/app/src/main/java/org/y20k/trackbook/helpers/NotificationHelper.kt
@@ -32,11 +32,8 @@ import org.y20k.trackbook.TrackerService
/*
* NotificationHelper class
*/
-class NotificationHelper(private val trackerService: TrackerService) {
-
- /* Define log tag */
- private val TAG: String = LogHelper.makeLogTag(NotificationHelper::class.java)
-
+class NotificationHelper(private val trackerService: TrackerService)
+{
/* Main class variables */
private val notificationManager: NotificationManager = trackerService.getSystemService(Context.NOTIFICATION_SERVICE) as NotificationManager
diff --git a/app/src/main/java/org/y20k/trackbook/helpers/PreferencesHelper.kt b/app/src/main/java/org/y20k/trackbook/helpers/PreferencesHelper.kt
index 6a0a808..66c97d5 100644
--- a/app/src/main/java/org/y20k/trackbook/helpers/PreferencesHelper.kt
+++ b/app/src/main/java/org/y20k/trackbook/helpers/PreferencesHelper.kt
@@ -88,18 +88,18 @@ object PreferencesHelper {
return sharedPreferences.getBoolean(Keys.PREF_USE_IMPERIAL_UNITS, LengthUnitHelper.useImperialUnits())
}
- fun loadGpsOnly(): Boolean {
- return sharedPreferences.getBoolean(Keys.PREF_GPS_ONLY, false)
+ fun load_location_gps(): Boolean {
+ return sharedPreferences.getBoolean(Keys.PREF_LOCATION_GPS, false)
+ }
+
+ fun load_location_network(): Boolean {
+ return sharedPreferences.getBoolean(Keys.PREF_LOCATION_NETWORK, false)
}
fun loadOmitRests(): Boolean {
return sharedPreferences.getBoolean(Keys.PREF_OMIT_RESTS, true)
}
- fun loadCommitInterval(): Int {
- return sharedPreferences.getInt(Keys.PREF_COMMIT_INTERVAL, Keys.COMMIT_INTERVAL)
- }
-
/* Loads the state of a map */
fun loadCurrentBestLocation(): Location {
val provider: String = sharedPreferences.getString(Keys.PREF_CURRENT_BEST_LOCATION_PROVIDER, LocationManager.NETWORK_PROVIDER) ?: LocationManager.NETWORK_PROVIDER
diff --git a/app/src/main/java/org/y20k/trackbook/tracklist/TracklistAdapter.kt b/app/src/main/java/org/y20k/trackbook/tracklist/TracklistAdapter.kt
index cb27f6d..35b2151 100644
--- a/app/src/main/java/org/y20k/trackbook/tracklist/TracklistAdapter.kt
+++ b/app/src/main/java/org/y20k/trackbook/tracklist/TracklistAdapter.kt
@@ -30,16 +30,13 @@ import org.y20k.trackbook.Keys
import org.y20k.trackbook.R
import org.y20k.trackbook.Database
import org.y20k.trackbook.Track
-import org.y20k.trackbook.helpers.*
import java.text.DateFormat
import java.text.SimpleDateFormat
import java.util.*
class TracklistAdapter(val fragment: Fragment, val database: Database) : RecyclerView.Adapter()
{
- private val context: Context = fragment.activity as Context
private lateinit var tracklistListener: TracklistAdapterListener
- private var useImperial: Boolean = PreferencesHelper.loadUseImperialUnits()
val tracks: ArrayList