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