diff options
author | Samuel Tardieu <sam@rfc1149.net> | 2014-08-26 12:23:14 +0200 |
---|---|---|
committer | Samuel Tardieu <sam@rfc1149.net> | 2014-08-26 12:23:14 +0200 |
commit | a3b14204ae9dc244325c1b1c197967f2c92f6557 (patch) | |
tree | edfe9f72784468d5be8948a1c8b5e8bd3cf8f247 /main/src/cgeo/geocaching/CgeoApplication.java | |
parent | ddd56039c368fdb47a49a6dfb29b361ab2b79ab6 (diff) | |
download | cgeo-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.java | 36 |
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 |