diff options
| author | Samuel Tardieu <sam@rfc1149.net> | 2014-04-01 08:31:00 +0200 |
|---|---|---|
| committer | Samuel Tardieu <sam@rfc1149.net> | 2014-04-01 08:48:33 +0200 |
| commit | 11d49a5a42dedf0821f16aa030bd0e7e27c9bc03 (patch) | |
| tree | 68af086740e6b366327e5888fa85d9ec9531cfd1 /main/src/cgeo/geocaching/sensors | |
| parent | 3ef2ff5d3c04ca8b7178b1ee34dae4d2979bde01 (diff) | |
| download | cgeo-11d49a5a42dedf0821f16aa030bd0e7e27c9bc03.zip cgeo-11d49a5a42dedf0821f16aa030bd0e7e27c9bc03.tar.gz cgeo-11d49a5a42dedf0821f16aa030bd0e7e27c9bc03.tar.bz2 | |
Remove compatibility with API < 8
Diffstat (limited to 'main/src/cgeo/geocaching/sensors')
| -rw-r--r-- | main/src/cgeo/geocaching/sensors/DirectionProvider.java | 28 |
1 files changed, 21 insertions, 7 deletions
diff --git a/main/src/cgeo/geocaching/sensors/DirectionProvider.java b/main/src/cgeo/geocaching/sensors/DirectionProvider.java index 8efbc1f..44732f7 100644 --- a/main/src/cgeo/geocaching/sensors/DirectionProvider.java +++ b/main/src/cgeo/geocaching/sensors/DirectionProvider.java @@ -1,9 +1,8 @@ package cgeo.geocaching.sensors; -import android.os.Process; -import cgeo.geocaching.compatibility.Compatibility; - +import cgeo.geocaching.utils.AngleUtils; import cgeo.geocaching.utils.StartableHandlerThread; + import rx.Observable; import rx.Observable.OnSubscribe; import rx.Subscriber; @@ -15,7 +14,9 @@ import android.hardware.Sensor; import android.hardware.SensorEvent; import android.hardware.SensorEventListener; import android.hardware.SensorManager; -import android.os.*; +import android.os.Handler; +import android.os.Process; +import android.view.Surface; public class DirectionProvider { @@ -24,8 +25,8 @@ public class DirectionProvider { static class Listener implements SensorEventListener, StartableHandlerThread.Callback { private int count = 0; - private SensorManager sensorManager; + private SensorManager sensorManager; @Override public void onSensorChanged(final SensorEvent event) { subject.onNext(event.values[0]); @@ -67,10 +68,10 @@ public class DirectionProvider { private static final StartableHandlerThread handlerThread = new StartableHandlerThread("DirectionProvider thread", Process.THREAD_PRIORITY_BACKGROUND, new Listener()); + static { handlerThread.start(); } - static public Observable<Float> create(final Context context) { return Observable.create(new OnSubscribe<Float>() { @Override @@ -90,7 +91,20 @@ public class DirectionProvider { */ public static float getDirectionNow(final Activity activity, final float direction) { - return Compatibility.getDirectionNow(direction, activity); + return AngleUtils.normalize(direction + getRotationOffset(activity)); + } + + private static int getRotationOffset(final Activity activity) { + switch (activity.getWindowManager().getDefaultDisplay().getRotation()) { + case Surface.ROTATION_90: + return 90; + case Surface.ROTATION_180: + return 180; + case Surface.ROTATION_270: + return 270; + default: + return 0; + } } } |
