From 03af1f1de738c43f3fa99580c98afe8c766d3b36 Mon Sep 17 00:00:00 2001 From: geeksville Date: Tue, 16 Jun 2020 10:30:10 -0700 Subject: [PATCH] Fix #55 - warn user if they have location disabled --- .../geeksville/mesh/ui/SettingsFragment.kt | 31 +++++++++++++++---- app/src/main/res/values/strings.xml | 1 + 2 files changed, 26 insertions(+), 6 deletions(-) diff --git a/app/src/main/java/com/geeksville/mesh/ui/SettingsFragment.kt b/app/src/main/java/com/geeksville/mesh/ui/SettingsFragment.kt index f960190b8..cb5eedc6d 100644 --- a/app/src/main/java/com/geeksville/mesh/ui/SettingsFragment.kt +++ b/app/src/main/java/com/geeksville/mesh/ui/SettingsFragment.kt @@ -14,6 +14,7 @@ import android.companion.CompanionDeviceManager import android.content.* import android.hardware.usb.UsbDevice import android.hardware.usb.UsbManager +import android.location.LocationManager import android.os.Bundle import android.os.ParcelUuid import android.view.LayoutInflater @@ -751,6 +752,15 @@ class SettingsFragment : ScreenFragment("Settings"), Logging { scanModel.stopScan() } + /** + * Has the user _turned on_ the system setting for current location access. + */ + private fun isLocationEnabled(): Boolean { + val locManager = + requireContext().getSystemService(Context.LOCATION_SERVICE) as LocationManager + return locManager.isLocationEnabled + } + override fun onResume() { super.onResume() if (!hasCompanionDeviceApi) @@ -758,12 +768,21 @@ class SettingsFragment : ScreenFragment("Settings"), Logging { // Keep reminding user BLE is still off val hasUSB = activity?.let { SerialInterface.findDrivers(it).isNotEmpty() } ?: true - if (scanModel.bluetoothAdapter?.isEnabled != true && !hasUSB) { - Toast.makeText( - requireContext(), - R.string.error_bluetooth, - Toast.LENGTH_SHORT - ).show() + if (!hasUSB) { + // Warn user if BLE is disabled + if (scanModel.bluetoothAdapter?.isEnabled != true) { + Toast.makeText( + requireContext(), + R.string.error_bluetooth, + Toast.LENGTH_SHORT + ).show() + } else if (!isLocationEnabled()) { + Toast.makeText( + requireContext(), + getString(R.string.location_disabled_warning), + Toast.LENGTH_SHORT + ).show() + } } } } diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index 1ca33cca5..918497e42 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -69,4 +69,5 @@ Very long range (but slow) UNRECOGNIZED Meshtastic Service Notifications + You must turn on location services in Android Settings