aboutsummaryrefslogtreecommitdiffstats
path: root/main/src/cgeo/geocaching/CgeoApplication.java
diff options
context:
space:
mode:
authorSamuel Tardieu <sam@rfc1149.net>2014-08-26 12:23:14 +0200
committerSamuel Tardieu <sam@rfc1149.net>2014-08-26 12:23:14 +0200
commita3b14204ae9dc244325c1b1c197967f2c92f6557 (patch)
treeedfe9f72784468d5be8948a1c8b5e8bd3cf8f247 /main/src/cgeo/geocaching/CgeoApplication.java
parentddd56039c368fdb47a49a6dfb29b361ab2b79ab6 (diff)
downloadcgeo-a3b14204ae9dc244325c1b1c197967f2c92f6557.zip
cgeo-a3b14204ae9dc244325c1b1c197967f2c92f6557.tar.gz
cgeo-a3b14204ae9dc244325c1b1c197967f2c92f6557.tar.bz2
refactoring: create setupDirectionObservable
Diffstat (limited to 'main/src/cgeo/geocaching/CgeoApplication.java')
-rw-r--r--main/src/cgeo/geocaching/CgeoApplication.java36
1 files changed, 21 insertions, 15 deletions
diff --git a/main/src/cgeo/geocaching/CgeoApplication.java b/main/src/cgeo/geocaching/CgeoApplication.java
index eada725..8b53b5e 100644
--- a/main/src/cgeo/geocaching/CgeoApplication.java
+++ b/main/src/cgeo/geocaching/CgeoApplication.java
@@ -88,7 +88,28 @@ public class CgeoApplication extends Application {
}
Log.i("Google Play services are " + (isGooglePlayServicesAvailable ? "" : "not ") + "available");
setupGeoDataObservables(Settings.useGooglePlayServices(), Settings.useLowPowerMode());
+ setupDirectionObservable();
+ gpsStatusObservable = GpsStatusProvider.create(this).replay(1).refCount();
+
+ // Attempt to acquire an initial location before any real activity happens.
geoDataObservableLowPower.subscribeOn(RxUtils.looperCallbacksScheduler).first().subscribe(rememberGeodataAction);
+ }
+
+ public void setupGeoDataObservables(final boolean useGooglePlayServices, final boolean useLowPowerLocation) {
+ if (useGooglePlayServices) {
+ geoDataObservable = LocationProvider.getMostPrecise(this).doOnNext(rememberGeodataAction);
+ if (useLowPowerLocation) {
+ geoDataObservableLowPower = LocationProvider.getLowPower(this, true).doOnNext(rememberGeodataAction);
+ } else {
+ geoDataObservableLowPower = geoDataObservable;
+ }
+ } else {
+ geoDataObservable = GeoDataProvider.create(this).replay(1).refCount().doOnNext(rememberGeodataAction);
+ geoDataObservableLowPower = geoDataObservable;
+ }
+ }
+
+ private void setupDirectionObservable() {
directionObservable = RotationProvider.create(this).onErrorResumeNext(new Func1<Throwable, Observable<? extends Float>>() {
@Override
public Observable<? extends Float> call(final Throwable throwable) {
@@ -106,21 +127,6 @@ public class CgeoApplication extends Application {
currentDirection = direction;
}
});
- gpsStatusObservable = GpsStatusProvider.create(this).replay(1).refCount();
- }
-
- public void setupGeoDataObservables(final boolean useGooglePlayServices, final boolean useLowPowerLocation) {
- if (useGooglePlayServices) {
- geoDataObservable = LocationProvider.getMostPrecise(this).doOnNext(rememberGeodataAction);
- if (useLowPowerLocation) {
- geoDataObservableLowPower = LocationProvider.getLowPower(this, true).doOnNext(rememberGeodataAction);
- } else {
- geoDataObservableLowPower = geoDataObservable;
- }
- } else {
- geoDataObservable = GeoDataProvider.create(this).replay(1).refCount().doOnNext(rememberGeodataAction);
- geoDataObservableLowPower = geoDataObservable;
- }
}
@Override