diff options
18 files changed, 104 insertions, 203 deletions
diff --git a/main/build.xml b/main/build.xml index 257aaf3..a888e9b 100644 --- a/main/build.xml +++ b/main/build.xml @@ -112,6 +112,12 @@ <filter token="ocde.okapi.consumer.secret" value="${ocde.okapi.consumer.secret}"/> <filter token="ocpl.okapi.consumer.key" value="${ocpl.okapi.consumer.key}"/> <filter token="ocpl.okapi.consumer.secret" value="${ocpl.okapi.consumer.secret}"/> + <filter token="ocus.okapi.consumer.key" value="${ocus.okapi.consumer.key}"/> + <filter token="ocus.okapi.consumer.secret" value="${ocus.okapi.consumer.secret}"/> + <filter token="ocnl.okapi.consumer.key" value="${ocnl.okapi.consumer.key}"/> + <filter token="ocnl.okapi.consumer.secret" value="${ocnl.okapi.consumer.secret}"/> + <filter token="ocro.okapi.consumer.key" value="${ocro.okapi.consumer.key}"/> + <filter token="ocro.okapi.consumer.secret" value="${ocro.okapi.consumer.secret}"/> </filterset> </copy> </target> diff --git a/main/src/cgeo/geocaching/activity/AbstractActivity.java b/main/src/cgeo/geocaching/activity/AbstractActivity.java index fd83043..1ed9b9b 100644 --- a/main/src/cgeo/geocaching/activity/AbstractActivity.java +++ b/main/src/cgeo/geocaching/activity/AbstractActivity.java @@ -4,10 +4,10 @@ import butterknife.ButterKnife; import cgeo.geocaching.CgeoApplication; import cgeo.geocaching.R; -import cgeo.geocaching.compatibility.Compatibility; import cgeo.geocaching.network.Cookies; import cgeo.geocaching.settings.Settings; import cgeo.geocaching.utils.ClipboardUtils; +import cgeo.geocaching.utils.EditUtils; import cgeo.geocaching.utils.HtmlUtils; import cgeo.geocaching.utils.TranslationUtils; @@ -86,11 +86,16 @@ public abstract class AbstractActivity extends FragmentActivity implements IAbst } protected static void disableSuggestions(final EditText edit) { - Compatibility.disableSuggestions(edit); + EditUtils.disableSuggestions(edit); } protected void restartActivity() { - Compatibility.restartActivity(this); + final Intent intent = getIntent(); + overridePendingTransition(0, 0); + intent.addFlags(Intent.FLAG_ACTIVITY_NO_ANIMATION); + finish(); + overridePendingTransition(0, 0); + startActivity(intent); } @Override diff --git a/main/src/cgeo/geocaching/compatibility/AndroidLevel8.java b/main/src/cgeo/geocaching/compatibility/AndroidLevel8.java deleted file mode 100644 index 1189ff5..0000000 --- a/main/src/cgeo/geocaching/compatibility/AndroidLevel8.java +++ /dev/null @@ -1,41 +0,0 @@ -package cgeo.geocaching.compatibility; - -import cgeo.geocaching.utils.Log; - -import android.annotation.TargetApi; -import android.app.Activity; -import android.app.backup.BackupManager; -import android.os.Environment; -import android.view.Surface; - -import java.io.File; - -@TargetApi(8) -public class AndroidLevel8 implements AndroidLevel8Interface { - - @Override - public void dataChanged(final String name) { - Log.i("Requesting settings backup with settings manager"); - BackupManager.dataChanged(name); - } - - @Override - public 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; - } - } - - @Override - public File getExternalPictureDir() { - return Environment.getExternalStoragePublicDirectory( - Environment.DIRECTORY_PICTURES); - } -} diff --git a/main/src/cgeo/geocaching/compatibility/AndroidLevel8Emulation.java b/main/src/cgeo/geocaching/compatibility/AndroidLevel8Emulation.java deleted file mode 100644 index 6d5781f..0000000 --- a/main/src/cgeo/geocaching/compatibility/AndroidLevel8Emulation.java +++ /dev/null @@ -1,38 +0,0 @@ -package cgeo.geocaching.compatibility; - -import android.annotation.TargetApi; -import android.app.Activity; -import android.content.res.Configuration; -import android.os.Environment; -import android.view.Display; - -import java.io.File; - -@TargetApi(value = 7) -public class AndroidLevel8Emulation implements AndroidLevel8Interface { - - @Override - public void dataChanged(final String name) { - // do nothing - } - - @Override - public int getRotationOffset(Activity activity) { - final Display display = activity.getWindowManager().getDefaultDisplay(); - - // the non deprecated method is available in API 8+ only, so we cannot deal better with this - @SuppressWarnings("deprecation") - final int rotation = display.getOrientation(); - - if (rotation == Configuration.ORIENTATION_LANDSCAPE) { - return 90; - } - return 0; - } - - @Override - public File getExternalPictureDir() { - // Use externalStorage/Pictures as default - return new File(Environment.getExternalStorageDirectory(), "Pictures"); - } -} diff --git a/main/src/cgeo/geocaching/compatibility/AndroidLevel8Interface.java b/main/src/cgeo/geocaching/compatibility/AndroidLevel8Interface.java deleted file mode 100644 index 2ba3708..0000000 --- a/main/src/cgeo/geocaching/compatibility/AndroidLevel8Interface.java +++ /dev/null @@ -1,11 +0,0 @@ -package cgeo.geocaching.compatibility; - -import android.app.Activity; - -import java.io.File; - -public interface AndroidLevel8Interface { - public void dataChanged(final String name); - public int getRotationOffset(final Activity activity); - public File getExternalPictureDir(); -}
\ No newline at end of file diff --git a/main/src/cgeo/geocaching/compatibility/Compatibility.java b/main/src/cgeo/geocaching/compatibility/Compatibility.java index 31c9e31..a293cfd 100644 --- a/main/src/cgeo/geocaching/compatibility/Compatibility.java +++ b/main/src/cgeo/geocaching/compatibility/Compatibility.java @@ -1,89 +1,25 @@ package cgeo.geocaching.compatibility; -import cgeo.geocaching.activity.AbstractActivity; -import cgeo.geocaching.utils.AngleUtils; -import cgeo.geocaching.utils.Log; - -import org.apache.commons.lang3.reflect.MethodUtils; import org.eclipse.jdt.annotation.NonNull; import android.app.Activity; -import android.content.Intent; import android.graphics.Point; import android.os.Build; -import android.text.InputType; -import android.widget.EditText; - -import java.io.File; public final class Compatibility { private final static int sdkVersion = Build.VERSION.SDK_INT; - private final static boolean isLevel8 = sdkVersion >= 8; - private final static boolean isLevel5 = sdkVersion >= 5; - private final static AndroidLevel8Interface level8; private final static AndroidLevel11Interface level11; private final static AndroidLevel13Interface level13; private final static AndroidLevel19Interface level19; static { - level8 = isLevel8 ? new AndroidLevel8() : new AndroidLevel8Emulation(); level11 = sdkVersion >= 11 ? new AndroidLevel11() : new AndroidLevel11Emulation(); level13 = sdkVersion >= 13 ? new AndroidLevel13() : new AndroidLevel13Emulation(); level19 = sdkVersion >= 19 ? new AndroidLevel19() : new AndroidLevel19Emulation(); } - /** - * Add 90, 180 or 270 degrees to the given rotation. - * - * @param directionNowPre - * the direction in degrees before adjustment - * @param activity - * the activity whose rotation is used to adjust the direction - * @return the adjusted direction, in the [0, 360[ range - */ - public static float getDirectionNow(final float directionNowPre, final Activity activity) { - return AngleUtils.normalize(directionNowPre + level8.getRotationOffset(activity)); - } - - public static void dataChanged(final String name) { - level8.dataChanged(name); - } - - public static void disableSuggestions(EditText edit) { - if (isLevel5) { - edit.setInputType(edit.getInputType() - | InputType.TYPE_TEXT_FLAG_NO_SUGGESTIONS - | InputType.TYPE_TEXT_VARIATION_FILTER); - } - else { - edit.setInputType(edit.getInputType() - | InputType.TYPE_TEXT_VARIATION_FILTER); - } - } - - private static void overridePendingTransition(final Activity activity, int enterAnim, int exitAnim) { - try { - MethodUtils.invokeMethod(activity, "overridePendingTransition", enterAnim, exitAnim); - } catch (Exception e) { - Log.e("cannot call overridePendingTransition", e); - } - } - - public static void restartActivity(AbstractActivity activity) { - final Intent intent = activity.getIntent(); - if (isLevel5) { - overridePendingTransition(activity, 0, 0); - intent.addFlags(Intent.FLAG_ACTIVITY_NO_ANIMATION); - } - activity.finish(); - if (isLevel5) { - overridePendingTransition(activity, 0, 0); - } - activity.startActivity(intent); - } - public static void invalidateOptionsMenu(final Activity activity) { level11.invalidateOptionsMenu(activity); } @@ -96,10 +32,6 @@ public final class Compatibility { return level13.getDisplaySize(); } - public static File getExternalPictureDir() { - return level8.getExternalPictureDir(); - } - public static void importGpxFromStorageAccessFramework(final @NonNull Activity activity, int requestCodeImportGpx) { level19.importGpxFromStorageAccessFramework(activity, requestCodeImportGpx); } diff --git a/main/src/cgeo/geocaching/search/AutoCompleteAdapter.java b/main/src/cgeo/geocaching/search/AutoCompleteAdapter.java index 885ed48..45559f4 100644 --- a/main/src/cgeo/geocaching/search/AutoCompleteAdapter.java +++ b/main/src/cgeo/geocaching/search/AutoCompleteAdapter.java @@ -1,7 +1,6 @@ package cgeo.geocaching.search; import org.apache.commons.lang3.StringUtils; - import rx.functions.Func1; import android.content.Context; @@ -36,7 +35,7 @@ public class AutoCompleteAdapter extends ArrayAdapter<String> { @Override public Filter getFilter() { - Filter filter = new Filter() { + return new Filter() { @Override protected FilterResults performFiltering(CharSequence constraint) { @@ -67,6 +66,5 @@ public class AutoCompleteAdapter extends ArrayAdapter<String> { } } }; - return filter; } }
\ No newline at end of file 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; + } } } diff --git a/main/src/cgeo/geocaching/sensors/GeoDirHandler.java b/main/src/cgeo/geocaching/sensors/GeoDirHandler.java index 37a0c5b..df19a92 100644 --- a/main/src/cgeo/geocaching/sensors/GeoDirHandler.java +++ b/main/src/cgeo/geocaching/sensors/GeoDirHandler.java @@ -4,6 +4,7 @@ import cgeo.geocaching.CgeoApplication; import cgeo.geocaching.settings.Settings; import org.apache.commons.lang3.tuple.ImmutablePair; + import rx.Observable; import rx.Subscription; import rx.android.schedulers.AndroidSchedulers; @@ -16,7 +17,7 @@ import rx.subscriptions.CompositeSubscription; * GeoData and Direction handler. * <p> * To use this class, override {@link #updateGeoDir(IGeoData, float)}. You need to start the handler using - * {@link #start()}. A good place to do so might be the {@code onResume} method of the Activity. Stop the Handler + * {@link #start(int)}. A good place to do so might be the {@code onResume} method of the Activity. Stop the Handler * accordingly in {@code onPause}. */ public abstract class GeoDirHandler { diff --git a/main/src/cgeo/geocaching/settings/SettingsActivity.java b/main/src/cgeo/geocaching/settings/SettingsActivity.java index 76f48e2..8834a3b 100644 --- a/main/src/cgeo/geocaching/settings/SettingsActivity.java +++ b/main/src/cgeo/geocaching/settings/SettingsActivity.java @@ -8,7 +8,6 @@ import cgeo.geocaching.SelectMapfileActivity; import cgeo.geocaching.activity.ActivityMixin; import cgeo.geocaching.apps.cache.navi.NavigationAppFactory; import cgeo.geocaching.apps.cache.navi.NavigationAppFactory.NavigationAppsEnum; -import cgeo.geocaching.compatibility.Compatibility; import cgeo.geocaching.connector.gc.GCConnector; import cgeo.geocaching.connector.gc.GCLogin; import cgeo.geocaching.files.SimpleDirChooser; @@ -21,6 +20,7 @@ import org.apache.commons.lang3.StringUtils; import org.openintents.intents.FileManagerIntents; import android.app.ProgressDialog; +import android.app.backup.BackupManager; import android.content.Context; import android.content.Intent; import android.content.res.Resources; @@ -111,7 +111,8 @@ public class SettingsActivity extends PreferenceActivity { @Override protected void onPause() { - Compatibility.dataChanged(getPackageName()); + Log.i("Requesting settings backup with settings manager"); + BackupManager.dataChanged(getPackageName()); super.onPause(); } diff --git a/main/src/cgeo/geocaching/ui/CompassView.java b/main/src/cgeo/geocaching/ui/CompassView.java index eaaf711..f7111f7 100644 --- a/main/src/cgeo/geocaching/ui/CompassView.java +++ b/main/src/cgeo/geocaching/ui/CompassView.java @@ -16,7 +16,6 @@ import android.graphics.Canvas; import android.graphics.Paint; import android.graphics.PaintFlagsDrawFilter; import android.util.AttributeSet; -import android.util.FloatMath; import android.view.View; import java.util.concurrent.TimeUnit; @@ -158,19 +157,19 @@ public class CompassView extends View { * @return the new value */ static protected float smoothUpdate(float goal, float actual) { - final float diff = AngleUtils.difference(actual, goal); + final double diff = AngleUtils.difference(actual, goal); - float offset = 0; + double offset = 0; // If the difference is smaller than 1 degree, do nothing as it // causes the arrow to vibrate. Round away from 0. if (diff > 1.0) { - offset = FloatMath.ceil(diff / 10.0f); // for larger angles, rotate faster + offset = Math.ceil(diff / 10.0); // for larger angles, rotate faster } else if (diff < 1.0) { - offset = FloatMath.floor(diff / 10.0f); + offset = Math.floor(diff / 10.0); } - return AngleUtils.normalize(actual + offset); + return AngleUtils.normalize((float) (actual + offset)); } @Override diff --git a/main/src/cgeo/geocaching/ui/dialog/CoordinatesInputDialog.java b/main/src/cgeo/geocaching/ui/dialog/CoordinatesInputDialog.java index c150434..cb52319 100644 --- a/main/src/cgeo/geocaching/ui/dialog/CoordinatesInputDialog.java +++ b/main/src/cgeo/geocaching/ui/dialog/CoordinatesInputDialog.java @@ -5,11 +5,11 @@ import cgeo.geocaching.sensors.IGeoData; import cgeo.geocaching.R; import cgeo.geocaching.activity.AbstractActivity; import cgeo.geocaching.activity.ActivityMixin; -import cgeo.geocaching.compatibility.Compatibility; import cgeo.geocaching.geopoint.Geopoint; import cgeo.geocaching.geopoint.GeopointFormatter; import cgeo.geocaching.settings.Settings; import cgeo.geocaching.settings.Settings.CoordInputFormatEnum; +import cgeo.geocaching.utils.EditUtils; import org.apache.commons.lang3.StringUtils; @@ -103,14 +103,14 @@ public class CoordinatesInputDialog extends NoTitleDialog { eLonSec.addTextChangedListener(new TextChanged(eLonSec)); eLonSub.addTextChangedListener(new TextChanged(eLonSub)); - Compatibility.disableSuggestions(eLatDeg); - Compatibility.disableSuggestions(eLatMin); - Compatibility.disableSuggestions(eLatSec); - Compatibility.disableSuggestions(eLatSub); - Compatibility.disableSuggestions(eLonDeg); - Compatibility.disableSuggestions(eLonMin); - Compatibility.disableSuggestions(eLonSec); - Compatibility.disableSuggestions(eLonSub); + EditUtils.disableSuggestions(eLatDeg); + EditUtils.disableSuggestions(eLatMin); + EditUtils.disableSuggestions(eLatSec); + EditUtils.disableSuggestions(eLatSub); + EditUtils.disableSuggestions(eLonDeg); + EditUtils.disableSuggestions(eLonMin); + EditUtils.disableSuggestions(eLonSec); + EditUtils.disableSuggestions(eLonSub); bLat.setOnClickListener(new ButtonClickListener()); bLon.setOnClickListener(new ButtonClickListener()); diff --git a/main/src/cgeo/geocaching/utils/EditUtils.java b/main/src/cgeo/geocaching/utils/EditUtils.java index d975df9..0bfe2ea 100644 --- a/main/src/cgeo/geocaching/utils/EditUtils.java +++ b/main/src/cgeo/geocaching/utils/EditUtils.java @@ -1,5 +1,6 @@ package cgeo.geocaching.utils; +import android.text.InputType; import android.view.KeyEvent; import android.view.View; import android.view.inputmethod.EditorInfo; @@ -41,4 +42,9 @@ public final class EditUtils { } + public static void disableSuggestions(EditText edit) { + edit.setInputType(edit.getInputType() + | InputType.TYPE_TEXT_FLAG_NO_SUGGESTIONS + | InputType.TYPE_TEXT_VARIATION_FILTER); + } } diff --git a/main/src/cgeo/geocaching/utils/ImageUtils.java b/main/src/cgeo/geocaching/utils/ImageUtils.java index eb91724..671ded9 100644 --- a/main/src/cgeo/geocaching/utils/ImageUtils.java +++ b/main/src/cgeo/geocaching/utils/ImageUtils.java @@ -15,6 +15,7 @@ import android.graphics.Rect; import android.graphics.drawable.BitmapDrawable; import android.media.ExifInterface; import android.net.Uri; +import android.os.Environment; import java.io.BufferedOutputStream; import java.io.File; @@ -200,8 +201,8 @@ public final class ImageUtils { public static File getOutputImageFile() { // To be safe, you should check that the SDCard is mounted // using Environment.getExternalStorageState() before doing this. + final File mediaStorageDir = new File(Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_PICTURES), "cgeo"); - File mediaStorageDir = new File(Compatibility.getExternalPictureDir(), "cgeo"); // This location works best if you want the created images to be shared // between applications and persist after your app has been uninstalled. diff --git a/main/templates/keys.xml b/main/templates/keys.xml index e667df5..63f7e58 100644 --- a/main/templates/keys.xml +++ b/main/templates/keys.xml @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="UTF-8"?> -<resources> +<resources xmlns:tools="http://schemas.android.com/tools"> <!-- Google Maps --> <string name="maps_api_key" translatable="false">@maps.api.key@</string> @@ -10,4 +10,16 @@ <!-- Opencaching.pl --> <string name="oc_pl_okapi_consumer_key" translatable="false">@ocpl.okapi.consumer.key@</string> <string name="oc_pl_okapi_consumer_secret" translatable="false">@ocpl.okapi.consumer.secret@</string> + <!-- disable unused resource warning until remaining implementation has been merged --> + <!-- Opencaching.us --> + <string name="oc_us_okapi_consumer_key" translatable="false" tools:ignore="UnusedResources">@ocus.okapi.consumer.key@</string> + <string name="oc_us_okapi_consumer_secret" translatable="false" tools:ignore="UnusedResources">@ocus.okapi.consumer.secret@</string> + + <!-- Opencaching.nl --> + <string name="oc_nl_okapi_consumer_key" translatable="false" tools:ignore="UnusedResources">@ocnl.okapi.consumer.key@</string> + <string name="oc_nl_okapi_consumer_secret" translatable="false" tools:ignore="UnusedResources">@ocnl.okapi.consumer.secret@</string> + + <!-- Opencaching.ro --> + <string name="oc_ro_okapi_consumer_key" translatable="false" tools:ignore="UnusedResources">@ocro.okapi.consumer.key@</string> + <string name="oc_ro_okapi_consumer_secret" translatable="false" tools:ignore="UnusedResources">@ocro.okapi.consumer.secret@</string> </resources> diff --git a/main/templates/private.properties b/main/templates/private.properties index 0c40fda..2451048 100644 --- a/main/templates/private.properties +++ b/main/templates/private.properties @@ -30,3 +30,24 @@ ocde.okapi.consumer.secret= ocpl.okapi.consumer.key= ocpl.okapi.consumer.secret= + +# These keys allow c:geo to be registered at openaching.us and +# to search and log caches in your name +# You can request your own at http://www.opencaching.us/okapi/signup.html + +ocus.okapi.consumer.key= +ocus.okapi.consumer.secret= + +# These keys allow c:geo to be registered at openaching.nl and +# to search and log caches in your name +# You can request your own at http://www.opencaching.nl/okapi/signup.html + +ocnl.okapi.consumer.key= +ocnl.okapi.consumer.secret= + +# These keys allow c:geo to be registered at openaching.ro and +# to search and log caches in your name +# You can request your own at http://oc.opencaching.ro/okapi/signup.html + +ocro.okapi.consumer.key= +ocro.okapi.consumer.secret= diff --git a/tests/AndroidManifest.xml b/tests/AndroidManifest.xml index 827115f..690838c 100644 --- a/tests/AndroidManifest.xml +++ b/tests/AndroidManifest.xml @@ -5,7 +5,7 @@ android:versionName="1.0" > <uses-sdk - android:minSdkVersion="7" + android:minSdkVersion="8" android:targetSdkVersion="13" /> <uses-feature diff --git a/tests/src/cgeo/geocaching/compatibility/CompatibilityTest.java b/tests/src/cgeo/geocaching/sensors/SensorsTest.java index 651bd08..7bf723a 100644 --- a/tests/src/cgeo/geocaching/compatibility/CompatibilityTest.java +++ b/tests/src/cgeo/geocaching/sensors/SensorsTest.java @@ -1,16 +1,16 @@ -package cgeo.geocaching.compatibility; +package cgeo.geocaching.sensors; import cgeo.geocaching.MainActivity; -import android.test.ActivityInstrumentationTestCase2; - import junit.framework.Assert; -public class CompatibilityTest extends ActivityInstrumentationTestCase2<MainActivity> { +import android.test.ActivityInstrumentationTestCase2; + +public class SensorsTest extends ActivityInstrumentationTestCase2<MainActivity> { private MainActivity activity; - public CompatibilityTest() { + public SensorsTest() { super(MainActivity.class); } @@ -20,13 +20,8 @@ public class CompatibilityTest extends ActivityInstrumentationTestCase2<MainActi activity = getActivity(); } - public static void testDataChanged() { - // This should not raise an exception in any Android version - Compatibility.dataChanged("cgeo.geocaching"); - } - public void testGetDirectionNow() { - final float angle = Compatibility.getDirectionNow(1.0f, activity); + final float angle = DirectionProvider.getDirectionNow(activity, 1.0f); Assert.assertTrue(angle == 1.0f || angle == 91.0f || angle == 181.0f || angle == 271.0f); } |
