diff options
| author | Samuel Tardieu <sam@rfc1149.net> | 2011-09-16 14:36:28 +0200 |
|---|---|---|
| committer | Samuel Tardieu <sam@rfc1149.net> | 2011-09-16 14:36:28 +0200 |
| commit | 579ef7a535489d4aa632db11667a3b01deb6cafd (patch) | |
| tree | 55810021c02ac7d80d3a9702ef0b59e4af154b9c /main/src/cgeo/geocaching/compatibility | |
| parent | 96ea21fd50334479c262da692038965d0e4d596a (diff) | |
| download | cgeo-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')
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"); + } + } + +} |
