aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--main/res/values/preference_keys.xml1
-rw-r--r--main/res/values/strings.xml13
-rw-r--r--main/res/xml/preferences.xml9
-rw-r--r--main/src/cgeo/geocaching/CgeoApplication.java23
-rw-r--r--main/src/cgeo/geocaching/settings/Settings.java8
-rw-r--r--main/src/cgeo/geocaching/settings/SettingsActivity.java14
6 files changed, 53 insertions, 15 deletions
diff --git a/main/res/values/preference_keys.xml b/main/res/values/preference_keys.xml
index 5189cc5..47eae46 100644
--- a/main/res/values/preference_keys.xml
+++ b/main/res/values/preference_keys.xml
@@ -106,6 +106,7 @@
<string name="pref_coordinputformat">coordinputformat</string>
<string name="pref_gccustomdate">gccustomdate</string>
<string name="pref_cookiestore">cookiestore</string>
+ <string name="pref_googleplayservices">googleplayservices</string>
<string name="pref_lastdetailspage">lastdetailspage</string>
<string name="pref_livemapstrategy">livemapstrategy</string>
<string name="pref_livemaphintshowcount">livemaphintshowcount</string>
diff --git a/main/res/values/strings.xml b/main/res/values/strings.xml
index e4759f0..ec01a10 100644
--- a/main/res/values/strings.xml
+++ b/main/res/values/strings.xml
@@ -528,6 +528,9 @@
<string name="init_maintenance">Maintenance</string>
<string name="init_maintenance_directories_note">c:geo stores images, log images and other files related to a cache in a separate directory. In some cases (like importing/exporting the database) this directory may contain outdated files, which can be deleted here.</string>
<string name="init_maintenance_directories">Delete orphaned files</string>
+ <string name="init_location">Geolocation</string>
+ <string name="init_location_note">On devices equipped with Google Play Services, c:geo can automatically use a better geolocation provider. However, this prevents the use of an external BlueTooth GPS receiver.</string>
+ <string name="init_location_googleplayservices">Use Google Play Services</string>
<string name="init_create_memory_dump">Create memory dump</string>
<string name="init_memory_dump">Memory dump</string>
<string name="init_memory_dumped">Memory dumped to %s</string>
@@ -936,11 +939,11 @@
<string name="license_dismiss">Dismiss</string>
<!-- helpers -->
- <string name="helper_calendar_title">c:geo calendar plugin</string>
- <string name="helper_calendar_missing">c:geo calendar plugin not installed.</string>
+ <string name="helper_calendar_title">c:geo calendar add-on</string>
+ <string name="helper_calendar_missing">c:geo calendar add-on not installed.</string>
<string name="helper_calendar_description">Enables you to export event caches to the calendar on your device.</string>
<string name="helper_sendtocgeo_title">Send to c:geo</string>
- <string name="helper_contacts_title">c:geo contacts plugin</string>
+ <string name="helper_contacts_title">c:geo contacts add-on</string>
<string name="helper_contacts_description">Enables you to open a contact card (of your address book) directly from a log entry, so you can more easily ask friends for help.</string>
<string name="helper_sendtocgeo_description">Send to c:geo is a browser extension <strong>for your PC</strong>. When browsing geocaching.com, you can send caches to your smartphone with the click of a button directly inside the browser.</string>
<string name="helper_locus_title">Locus</string>
@@ -957,7 +960,7 @@
<string name="helper_google_translate_description">If you download translation packages in the Google Translate app, then you can easily translate cache descriptions in c:geo by a long tap on the cache description text (without an Internet connection).</string>
<!-- add-ons -->
- <string name="addon_missing_title">Missing plugin</string>
+ <string name="addon_missing_title">Missing Add-On</string>
<string name="addon_download_prompt">Get it now from Google Play.</string>
<!-- export -->
@@ -1226,8 +1229,6 @@
<string name="tts_service">Talking compass</string>
<string name="tts_start">Start talking</string>
<string name="tts_stop">Stop talking</string>
- <string name="tts_started">Started speech</string>
- <string name="tts_stopped">Stopped speech</string>
<string name="err_tts_lang_not_supported">The current language is not supported by text-to-speech.</string>
<string name="tts_one_kilometer">one kilometer</string>
<plurals name="tts_kilometers">
diff --git a/main/res/xml/preferences.xml b/main/res/xml/preferences.xml
index 6226ebf..6d7f546 100644
--- a/main/res/xml/preferences.xml
+++ b/main/res/xml/preferences.xml
@@ -745,6 +745,15 @@
android:key="@string/pref_fakekey_preference_maintenance_directories"
android:title="@string/init_maintenance_directories" />
</PreferenceCategory>
+ <PreferenceCategory android:title="@string/init_location">
+ <cgeo.geocaching.settings.TextPreference
+ android:layout="@layout/text_preference"
+ android:text="@string/init_location_note" />
+ <CheckBoxPreference
+ android:defaultValue="true"
+ android:key="@string/pref_googleplayservices"
+ android:title="@string/init_location_googleplayservices" />
+ </PreferenceCategory>
<PreferenceCategory android:title="@string/init_debug_title" >
<cgeo.geocaching.settings.TextPreference
android:layout="@layout/text_preference"
diff --git a/main/src/cgeo/geocaching/CgeoApplication.java b/main/src/cgeo/geocaching/CgeoApplication.java
index 0a3c0ad..df36d6e 100644
--- a/main/src/cgeo/geocaching/CgeoApplication.java
+++ b/main/src/cgeo/geocaching/CgeoApplication.java
@@ -7,6 +7,7 @@ import cgeo.geocaching.sensors.GeoDataProvider;
import cgeo.geocaching.sensors.GpsStatusProvider;
import cgeo.geocaching.sensors.GpsStatusProvider.Status;
import cgeo.geocaching.sensors.IGeoData;
+import cgeo.geocaching.settings.Settings;
import cgeo.geocaching.utils.Log;
import cgeo.geocaching.utils.OOMDumpingUncaughtExceptionHandler;
import cgeo.geocaching.utils.RxUtils;
@@ -34,6 +35,12 @@ public class CgeoApplication extends Application {
private volatile IGeoData currentGeo = GeoData.dummyLocation();
private volatile float currentDirection = 0.0f;
private boolean isGooglePlayServicesAvailable = false;
+ private final Action1<IGeoData> REMEMBER_GEODATA = new Action1<IGeoData>() {
+ @Override
+ public void call(final IGeoData geoData) {
+ currentGeo = geoData;
+ }
+ };
public static void dumpOnOutOfMemory(final boolean enable) {
@@ -77,15 +84,8 @@ public class CgeoApplication extends Application {
isGooglePlayServicesAvailable = true;
}
Log.i("Google Play services are " + (isGooglePlayServicesAvailable ? "" : "not ") + "available");
- final Action1<IGeoData> rememberGeoData = new Action1<IGeoData>() {
- @Override
- public void call(final IGeoData geoData) {
- currentGeo = geoData;
- }
- };
- geoDataObservable = (isGooglePlayServicesAvailable() ? LocationProvider.create(this) : GeoDataProvider.create(this))
- .replay(1).refCount().doOnNext(rememberGeoData);
- geoDataObservable.subscribeOn(RxUtils.looperCallbacksScheduler).first().subscribe(rememberGeoData);
+ setupGeoDataObservables(Settings.useGooglePlayServices());
+ geoDataObservable.subscribeOn(RxUtils.looperCallbacksScheduler).first().subscribe(REMEMBER_GEODATA);
directionObservable = DirectionProvider.create(this).replay(1).refCount().doOnNext(new Action1<Float>() {
@Override
public void call(final Float direction) {
@@ -95,6 +95,11 @@ public class CgeoApplication extends Application {
gpsStatusObservable = GpsStatusProvider.create(this).share();
}
+ public void setupGeoDataObservables(final boolean useGooglePlayServices) {
+ geoDataObservable = (isGooglePlayServicesAvailable() && useGooglePlayServices ? LocationProvider.create(this) : GeoDataProvider.create(this))
+ .replay(1).refCount().doOnNext(REMEMBER_GEODATA);
+ }
+
@Override
public void onLowMemory() {
Log.i("Cleaning applications cache.");
diff --git a/main/src/cgeo/geocaching/settings/Settings.java b/main/src/cgeo/geocaching/settings/Settings.java
index b1c5c31..c434d9f 100644
--- a/main/src/cgeo/geocaching/settings/Settings.java
+++ b/main/src/cgeo/geocaching/settings/Settings.java
@@ -393,6 +393,14 @@ public class Settings {
return getString(R.string.pref_cookiestore, null);
}
+ public static boolean useGooglePlayServices() {
+ return getBoolean(R.string.pref_googleplayservices, true);
+ }
+
+ public static boolean setUseGooglePlayServices(final boolean useGooglePlayServices) {
+ return putBoolean(R.string.pref_googleplayservices, useGooglePlayServices);
+ }
+
/**
* @param cacheType
* The cache type used for future filtering
diff --git a/main/src/cgeo/geocaching/settings/SettingsActivity.java b/main/src/cgeo/geocaching/settings/SettingsActivity.java
index bf73370..9001aeb 100644
--- a/main/src/cgeo/geocaching/settings/SettingsActivity.java
+++ b/main/src/cgeo/geocaching/settings/SettingsActivity.java
@@ -122,6 +122,7 @@ public class SettingsActivity extends PreferenceActivity {
initDefaultNavigationPreferences();
initBackupButtons();
initDbLocationPreference();
+ initGeolocationPreference();
initDebugPreference();
initBasicMemberPreferences();
initSend2CgeoPreferences();
@@ -398,6 +399,19 @@ public class SettingsActivity extends PreferenceActivity {
});
}
+ private void initGeolocationPreference() {
+ final Preference p = getPreference(R.string.pref_googleplayservices);
+ p.setOnPreferenceChangeListener(new OnPreferenceChangeListener() {
+ @Override
+ public boolean onPreferenceChange(final Preference preference, final Object newValue) {
+ final boolean useGooglePlayServices = (Boolean) newValue;
+ CgeoApplication.getInstance().setupGeoDataObservables(useGooglePlayServices);
+ return true;
+ }
+ });
+ p.setEnabled(CgeoApplication.getInstance().isGooglePlayServicesAvailable());
+ }
+
void initBasicMemberPreferences() {
getPreference(R.string.preference_screen_basicmembers)
.setEnabled(!Settings.isGCPremiumMember());