aboutsummaryrefslogtreecommitdiffstats
path: root/main/src/cgeo/geocaching/compatibility
diff options
context:
space:
mode:
authorSamuel Tardieu <sam@rfc1149.net>2011-09-16 14:36:28 +0200
committerSamuel Tardieu <sam@rfc1149.net>2011-09-16 14:36:28 +0200
commit579ef7a535489d4aa632db11667a3b01deb6cafd (patch)
tree55810021c02ac7d80d3a9702ef0b59e4af154b9c /main/src/cgeo/geocaching/compatibility
parent96ea21fd50334479c262da692038965d0e4d596a (diff)
downloadcgeo-579ef7a535489d4aa632db11667a3b01deb6cafd.zip
cgeo-579ef7a535489d4aa632db11667a3b01deb6cafd.tar.gz
cgeo-579ef7a535489d4aa632db11667a3b01deb6cafd.tar.bz2
Move sources into the main directory
This prepares the inclusion of tests into the same repository.
Diffstat (limited to 'main/src/cgeo/geocaching/compatibility')
-rw-r--r--main/src/cgeo/geocaching/compatibility/AndroidLevel8.java27
-rw-r--r--main/src/cgeo/geocaching/compatibility/AndroidLevel8Internal.java15
-rw-r--r--main/src/cgeo/geocaching/compatibility/Compatibility.java72
3 files changed, 114 insertions, 0 deletions
diff --git a/main/src/cgeo/geocaching/compatibility/AndroidLevel8.java b/main/src/cgeo/geocaching/compatibility/AndroidLevel8.java
new file mode 100644
index 0000000..9c5148a
--- /dev/null
+++ b/main/src/cgeo/geocaching/compatibility/AndroidLevel8.java
@@ -0,0 +1,27 @@
+package cgeo.geocaching.compatibility;
+
+import android.app.Activity;
+
+public class AndroidLevel8 {
+ static {
+ try {
+ Class.forName("cgeo.geocaching.compatibility.AndroidLevel8Internal");
+ } catch (Exception e) {
+ throw new RuntimeException(e);
+ }
+ }
+
+ private AndroidLevel8Internal internal;
+
+ public static void check() {
+ // nothing
+ }
+
+ public AndroidLevel8() {
+ internal = new AndroidLevel8Internal();
+ }
+
+ public int getRotation(Activity activity) {
+ return internal.getRotation(activity);
+ }
+}
diff --git a/main/src/cgeo/geocaching/compatibility/AndroidLevel8Internal.java b/main/src/cgeo/geocaching/compatibility/AndroidLevel8Internal.java
new file mode 100644
index 0000000..45b465b
--- /dev/null
+++ b/main/src/cgeo/geocaching/compatibility/AndroidLevel8Internal.java
@@ -0,0 +1,15 @@
+package cgeo.geocaching.compatibility;
+
+import android.app.Activity;
+import android.view.Display;
+
+class AndroidLevel8Internal {
+
+ public AndroidLevel8Internal() {
+ }
+
+ public static int getRotation(final Activity activity) {
+ Display display = activity.getWindowManager().getDefaultDisplay();
+ return display.getRotation();
+ }
+}
diff --git a/main/src/cgeo/geocaching/compatibility/Compatibility.java b/main/src/cgeo/geocaching/compatibility/Compatibility.java
new file mode 100644
index 0000000..2f94915
--- /dev/null
+++ b/main/src/cgeo/geocaching/compatibility/Compatibility.java
@@ -0,0 +1,72 @@
+package cgeo.geocaching.compatibility;
+
+import android.app.Activity;
+import android.content.res.Configuration;
+import android.net.Uri;
+import android.os.Build;
+import android.view.Display;
+import android.view.Surface;
+
+public final class Compatibility {
+
+ private static AndroidLevel8 level8;
+ private static boolean initialized = false;
+
+ private static AndroidLevel8 getLevel8() {
+ if (!initialized) {
+ try {
+ final int sdk = Integer.valueOf(Build.VERSION.SDK).intValue();
+ if (sdk >= 8) {
+ level8 = new AndroidLevel8();
+ }
+ } catch (Exception e) {
+ // nothing
+ }
+ initialized = true;
+ }
+ return level8;
+ }
+
+ public static Float getDirectionNow(final Float directionNowPre,
+ final Activity activity) {
+ AndroidLevel8 level8 = getLevel8();
+
+ if (level8 != null) {
+ final int rotation = level8.getRotation(activity);
+ if (rotation == Surface.ROTATION_90) {
+ return directionNowPre + 90;
+ } else if (rotation == Surface.ROTATION_180) {
+ return directionNowPre + 180;
+ } else if (rotation == Surface.ROTATION_270) {
+ return directionNowPre + 270;
+ }
+ } else {
+ final Display display = activity.getWindowManager()
+ .getDefaultDisplay();
+ final int rotation = display.getOrientation();
+ if (rotation == Configuration.ORIENTATION_LANDSCAPE) {
+ return directionNowPre + 90;
+ }
+ }
+ return directionNowPre;
+ }
+
+ public static Uri getCalendarProviderURI() {
+ final int sdk = Integer.valueOf(Build.VERSION.SDK).intValue();
+ if (sdk >= 8) {
+ return Uri.parse("content://com.android.calendar/calendars");
+ } else {
+ return Uri.parse("content://calendar/calendars");
+ }
+ }
+
+ public static Uri getCalenderEventsProviderURI() {
+ final int sdk = Integer.valueOf(Build.VERSION.SDK).intValue();
+ if (sdk >= 8) {
+ return Uri.parse("content://com.android.calendar/events");
+ } else {
+ return Uri.parse("content://calendar/events");
+ }
+ }
+
+}