add setting for how to open Maps app

This commit is contained in:
Johan von Forstner
2020-04-20 20:15:36 +02:00
parent 84bbdaf4ec
commit ec19a55db8
7 changed files with 82 additions and 2 deletions

View File

@@ -13,6 +13,7 @@ import androidx.navigation.ui.setupWithNavController
import com.google.android.material.navigation.NavigationView
import com.google.android.material.snackbar.Snackbar
import net.vonforst.evmap.api.goingelectric.ChargeLocation
import net.vonforst.evmap.storage.PreferenceDataSource
const val REQUEST_LOCATION_PERMISSION = 1
@@ -26,6 +27,7 @@ class MapsActivity : AppCompatActivity() {
private lateinit var navController: NavController
lateinit var appBarConfiguration: AppBarConfiguration
var fragmentCallback: FragmentCallback? = null
private lateinit var prefs: PreferenceDataSource
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
@@ -42,6 +44,8 @@ class MapsActivity : AppCompatActivity() {
findViewById<DrawerLayout>(R.id.drawer_layout)
)
findViewById<NavigationView>(R.id.nav_view).setupWithNavController(navController)
prefs = PreferenceDataSource(this)
}
override fun onBackPressed() {
@@ -56,11 +60,11 @@ class MapsActivity : AppCompatActivity() {
// google maps navigation
intent.data = Uri.parse("google.navigation:q=${coord.lat},${coord.lng}")
val pm = packageManager
if (intent.resolveActivity(pm) != null) {
if (intent.resolveActivity(pm) != null && prefs.navigateUseMaps) {
startActivity(intent);
} else {
// fallback: generic geo intent
intent.data = Uri.parse("geo:${coord.lat},${coord.lng}")
intent.data = Uri.parse("geo:0,0?q=${coord.lat},${coord.lng}(${charger.name})")
if (intent.resolveActivity(pm) != null) {
startActivity(intent);
} else {

View File

@@ -0,0 +1,36 @@
package net.vonforst.evmap.fragment
import android.os.Bundle
import android.view.View
import androidx.appcompat.widget.Toolbar
import androidx.navigation.fragment.findNavController
import androidx.navigation.ui.setupWithNavController
import androidx.preference.Preference
import androidx.preference.PreferenceFragmentCompat
import net.vonforst.evmap.MapsActivity
import net.vonforst.evmap.R
class SettingsFragment : PreferenceFragmentCompat() {
override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
super.onViewCreated(view, savedInstanceState)
val toolbar = view.findViewById(R.id.toolbar) as Toolbar
val navController = findNavController()
toolbar.setupWithNavController(
navController,
(requireActivity() as MapsActivity).appBarConfiguration
)
}
override fun onCreatePreferences(savedInstanceState: Bundle?, rootKey: String?) {
setPreferencesFromResource(R.xml.settings, rootKey)
}
override fun onPreferenceTreeClick(preference: Preference?): Boolean {
return when (preference?.key) {
else -> super.onPreferenceTreeClick(preference)
}
}
}

View File

@@ -0,0 +1,14 @@
package net.vonforst.evmap.storage
import android.content.Context
import androidx.preference.PreferenceManager
class PreferenceDataSource(context: Context) {
val sp = PreferenceManager.getDefaultSharedPreferences(context)
var navigateUseMaps: Boolean
get() = sp.getBoolean("navigate_use_maps", true)
set(value) {
sp.edit().putBoolean("navigate_use_maps", value).apply()
}
}

View File

@@ -23,6 +23,11 @@
android:name="net.vonforst.evmap.fragment.AboutFragment"
android:label="@string/about"
tools:layout="@layout/fragment_preference" />
<fragment
android:id="@+id/settings"
android:name="net.vonforst.evmap.fragment.SettingsFragment"
android:label="@string/settings"
tools:layout="@layout/fragment_preference" />
<fragment
android:id="@+id/gallery"
android:name="net.vonforst.evmap.fragment.GalleryFragment"

View File

@@ -39,4 +39,7 @@
<string name="fav_add">Zu Favoriten hinzufügen</string>
<string name="fav_remove">Aus Favoriten entfernen</string>
<string name="distance_format">%.1f km</string>
<string name="pref_navigate_use_maps">Mit Google Maps navigieren</string>
<string name="pref_navigate_use_maps_on">Google Maps-Navigation sofort starten</string>
<string name="pref_navigate_use_maps_off">Karten-App mit Position der Ladesäule starten</string>
</resources>

View File

@@ -38,4 +38,7 @@
<string name="fav_add">Add to favorites</string>
<string name="fav_remove">Remove from favorites</string>
<string name="distance_format">%.1f km</string>
<string name="pref_navigate_use_maps">Navigate using Google Maps</string>
<string name="pref_navigate_use_maps_on">Start Google Maps navigation immediately</string>
<string name="pref_navigate_use_maps_off">Launch Maps app with charger location</string>
</resources>

View File

@@ -0,0 +1,15 @@
<?xml version="1.0" encoding="utf-8"?>
<PreferenceScreen xmlns:android="http://schemas.android.com/apk/res/android">
<PreferenceCategory android:title="@string/settings">
<CheckBoxPreference
android:key="navigate_use_maps"
android:title="@string/pref_navigate_use_maps"
android:summaryOn="@string/pref_navigate_use_maps_on"
android:summaryOff="@string/pref_navigate_use_maps_off"
android:defaultValue="true" />
</PreferenceCategory>
</PreferenceScreen>