From 48b7cbaa0b469794088d41038192366fea802190 Mon Sep 17 00:00:00 2001 From: Samuel Tardieu Date: Thu, 6 Mar 2014 08:46:44 +0100 Subject: refactoring: create cgeo.geocaching.sensors package --- main/src/cgeo/geocaching/utils/GeoDirHandler.java | 129 ---------------------- 1 file changed, 129 deletions(-) delete mode 100644 main/src/cgeo/geocaching/utils/GeoDirHandler.java (limited to 'main/src/cgeo/geocaching/utils/GeoDirHandler.java') diff --git a/main/src/cgeo/geocaching/utils/GeoDirHandler.java b/main/src/cgeo/geocaching/utils/GeoDirHandler.java deleted file mode 100644 index 7050e61..0000000 --- a/main/src/cgeo/geocaching/utils/GeoDirHandler.java +++ /dev/null @@ -1,129 +0,0 @@ -package cgeo.geocaching.utils; - -import cgeo.geocaching.CgeoApplication; -import cgeo.geocaching.IGeoData; -import cgeo.geocaching.settings.Settings; - -import rx.Scheduler; -import rx.Subscription; -import rx.android.schedulers.AndroidSchedulers; -import rx.schedulers.Schedulers; -import rx.functions.Action1; - -import java.util.concurrent.TimeUnit; - -/** - * GeoData and Direction handler. - *

- * To use this class, override at least one of {@link #updateDirection(float)} or {@link #updateGeoData(IGeoData)}. You - * need to start the handler using one of - *

- * A good place might be the {@code onResume} method of the Activity. Stop the Handler accordingly in {@code onPause}. - *

- */ -public abstract class GeoDirHandler { - private static final CgeoApplication app = CgeoApplication.getInstance(); - - private Subscription dirSubscription = null; - private Subscription geoSubscription = null; - - /** - * Update method called when new IGeoData is available. - * - * @param data - * the new data - */ - public void updateGeoData(final IGeoData data) { - // Override this in children - } - - /** - * Update method called when new direction data is available. - * - * @param direction - * the new direction - */ - public void updateDirection(final float direction) { - // Override this in children - } - - /** - * Register the current GeoDirHandler for GeoData information. - */ - public synchronized void startGeo() { - geoSubscription = app.currentGeoObject() - .subscribeOn(AndroidSchedulers.mainThread()) - .subscribe(new Action1() { - @Override - public void call(final IGeoData geoData) { - updateGeoData(geoData); - } - }); - } - - /** - * Register the current GeoDirHandler for direction information if the preferences - * allow it. - */ - public synchronized void startDir() { - if (Settings.isUseCompass()) { - dirSubscription = app.currentDirObject() - .subscribeOn(AndroidSchedulers.mainThread()) - .subscribe(new Action1() { - @Override - public void call(final Float direction) { - updateDirection(direction); - } - }); - } - } - - /** - * Register the current GeoDirHandler for GeoData and direction information (if the - * preferences allow it). - */ - public void startGeoAndDir() { - startGeo(); - startDir(); - } - - /** - * Unregister the current GeoDirHandler for GeoData information. - */ - public synchronized void stopGeo() { - // Delay the unsubscription by 2.5 seconds, so that another activity has - // the time to subscribe and the GPS receiver will not be turned down. - if (geoSubscription != null) { - final Subscription subscription = geoSubscription; - geoSubscription = null; - Schedulers.newThread().schedule(new Action1() { - @Override - public void call(final Scheduler.Inner inner) { - subscription.unsubscribe(); - } - }, 2500, TimeUnit.MILLISECONDS); - } - } - - /** - * Unregister the current GeoDirHandler for direction information. - */ - public synchronized void stopDir() { - if (dirSubscription != null) { - dirSubscription.unsubscribe(); - dirSubscription = null; - } - } - - /** - * Unregister the current GeoDirHandler for GeoData and direction information. - */ - public void stopGeoAndDir() { - stopGeo(); - stopDir(); - } -} -- cgit v1.1