diff --git a/app/src/main/java/com/rtbishop/look4sat/ui/SharedViewModel.kt b/app/src/main/java/com/rtbishop/look4sat/ui/SharedViewModel.kt index 281d7e9a..89a4dfa6 100644 --- a/app/src/main/java/com/rtbishop/look4sat/ui/SharedViewModel.kt +++ b/app/src/main/java/com/rtbishop/look4sat/ui/SharedViewModel.kt @@ -55,6 +55,7 @@ class SharedViewModel @Inject constructor( fun getUpdateStatus(): LiveData> = _updateStatus fun getGSP(): LiveData> = _gsp + fun getCompass() = prefsManager.getCompass() fun getRefreshRate() = prefsManager.getRefreshRate() fun getHoursAhead() = prefsManager.getHoursAhead() fun getMinElevation() = prefsManager.getMinElevation() diff --git a/app/src/main/java/com/rtbishop/look4sat/ui/fragments/PolarViewFragment.kt b/app/src/main/java/com/rtbishop/look4sat/ui/fragments/PolarViewFragment.kt index 400b1efb..459c1f57 100644 --- a/app/src/main/java/com/rtbishop/look4sat/ui/fragments/PolarViewFragment.kt +++ b/app/src/main/java/com/rtbishop/look4sat/ui/fragments/PolarViewFragment.kt @@ -82,17 +82,21 @@ class PolarViewFragment : Fragment(R.layout.fragment_polar_view), SensorEventLis override fun onResume() { super.onResume() - sensorManager.getDefaultSensor(Sensor.TYPE_ACCELEROMETER).also { accData -> - sensorManager.registerListener(this, accData, SensorManager.SENSOR_DELAY_GAME) - } - sensorManager.getDefaultSensor(Sensor.TYPE_MAGNETIC_FIELD).also { magData -> - sensorManager.registerListener(this, magData, SensorManager.SENSOR_DELAY_GAME) + if (viewModel.getCompass()) { + sensorManager.getDefaultSensor(Sensor.TYPE_ACCELEROMETER).also { accData -> + sensorManager.registerListener(this, accData, SensorManager.SENSOR_DELAY_GAME) + } + sensorManager.getDefaultSensor(Sensor.TYPE_MAGNETIC_FIELD).also { magData -> + sensorManager.registerListener(this, magData, SensorManager.SENSOR_DELAY_GAME) + } } } override fun onPause() { super.onPause() - sensorManager.unregisterListener(this) + if (viewModel.getCompass()) { + sensorManager.unregisterListener(this) + } } override fun onAccuracyChanged(sensor: Sensor?, accuracy: Int) {} @@ -152,7 +156,6 @@ class PolarViewFragment : Fragment(R.layout.fragment_polar_view), SensorEventLis private fun refreshText(rate: Long) { refreshJob?.cancel() - refreshJob = null refreshJob = lifecycleScope.launch { while (true) { setPassText() diff --git a/app/src/main/java/com/rtbishop/look4sat/utility/PrefsManager.kt b/app/src/main/java/com/rtbishop/look4sat/utility/PrefsManager.kt index 9a49b509..7a967f23 100644 --- a/app/src/main/java/com/rtbishop/look4sat/utility/PrefsManager.kt +++ b/app/src/main/java/com/rtbishop/look4sat/utility/PrefsManager.kt @@ -35,6 +35,7 @@ class PrefsManager @Inject constructor( private val keyLongitude = "longitude" private val keyAltitude = "altitude" private val keyRefreshRate = "rate" + private val keyCompass = "compass" private val defaultHoursAhead = 8 private val defaultMinEl = 16.0 private val defaultRefreshRate = "3000" @@ -52,6 +53,10 @@ class PrefsManager @Inject constructor( return preferences.getString(keyRefreshRate, defaultRefreshRate)!!.toLong() } + fun getCompass(): Boolean { + return preferences.getBoolean(keyCompass, false) + } + fun getPosition(): GroundStationPosition { val lat = preferences.getString(keyLatitude, defaultGSP)!!.toDouble() val lon = preferences.getString(keyLongitude, defaultGSP)!!.toDouble() diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index f2f0952e..21e744d4 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -69,6 +69,8 @@ rate View refresh rate, ms Set the value between 250ms and 10000ms + compass + Use sensors to rotate PolarView Mode: Null Uplink: Null diff --git a/app/src/main/res/xml/preference.xml b/app/src/main/res/xml/preference.xml index 01a305ba..df4afbde 100644 --- a/app/src/main/res/xml/preference.xml +++ b/app/src/main/res/xml/preference.xml @@ -45,5 +45,9 @@ android:selectAllOnFocus="true" android:singleLine="true" android:title="@string/pref_refresh_rate_title" /> +