diff options
author | Bananeweizen <Bananeweizen@gmx.de> | 2012-02-17 18:13:02 +0100 |
---|---|---|
committer | Bananeweizen <Bananeweizen@gmx.de> | 2012-02-17 18:13:02 +0100 |
commit | 5241b730a8a3d3650b9b6f0352f74c090e258afe (patch) | |
tree | e81d968c2c4de4a5f66109c158d6e92a7f624049 /main/src/cgeo/geocaching/compatibility | |
parent | 9649d1c0fc401be51432c7e23943c5cb40679954 (diff) | |
download | cgeo-5241b730a8a3d3650b9b6f0352f74c090e258afe.zip cgeo-5241b730a8a3d3650b9b6f0352f74c090e258afe.tar.gz cgeo-5241b730a8a3d3650b9b6f0352f74c090e258afe.tar.bz2 |
refactoring: remove reflection from compatibility package
Diffstat (limited to 'main/src/cgeo/geocaching/compatibility')
4 files changed, 34 insertions, 25 deletions
diff --git a/main/src/cgeo/geocaching/compatibility/AndroidLevel8.java b/main/src/cgeo/geocaching/compatibility/AndroidLevel8.java index 259cb5c..6d01e55 100644 --- a/main/src/cgeo/geocaching/compatibility/AndroidLevel8.java +++ b/main/src/cgeo/geocaching/compatibility/AndroidLevel8.java @@ -7,14 +7,14 @@ import android.app.backup.BackupManager; import android.util.Log; import android.view.Display; -public class AndroidLevel8 { +public class AndroidLevel8 implements AndroidLevel8Interface { - static public int getRotation(final Activity activity) { + public int getRotation(final Activity activity) { Display display = activity.getWindowManager().getDefaultDisplay(); return display.getRotation(); } - static public void dataChanged(final String name) { + public void dataChanged(final String name) { Log.i(Settings.tag, "Requesting settings backup with settings manager"); BackupManager.dataChanged(name); } diff --git a/main/src/cgeo/geocaching/compatibility/AndroidLevel8Dummy.java b/main/src/cgeo/geocaching/compatibility/AndroidLevel8Dummy.java new file mode 100644 index 0000000..664b55b --- /dev/null +++ b/main/src/cgeo/geocaching/compatibility/AndroidLevel8Dummy.java @@ -0,0 +1,14 @@ +package cgeo.geocaching.compatibility; + +import android.app.Activity; + +public class AndroidLevel8Dummy implements AndroidLevel8Interface { + + public int getRotation(final Activity activity) { + return 0; + } + + public void dataChanged(final String name) { + // do nothing + } +} diff --git a/main/src/cgeo/geocaching/compatibility/AndroidLevel8Interface.java b/main/src/cgeo/geocaching/compatibility/AndroidLevel8Interface.java new file mode 100644 index 0000000..b1c4f81 --- /dev/null +++ b/main/src/cgeo/geocaching/compatibility/AndroidLevel8Interface.java @@ -0,0 +1,9 @@ +package cgeo.geocaching.compatibility; + +import android.app.Activity; + +public interface AndroidLevel8Interface { + public int getRotation(final Activity activity); + public void dataChanged(final String name); + +}
\ 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 b6d1061..409f837 100644 --- a/main/src/cgeo/geocaching/compatibility/Compatibility.java +++ b/main/src/cgeo/geocaching/compatibility/Compatibility.java @@ -14,28 +14,21 @@ import android.view.Display; import android.view.Surface; import android.widget.EditText; -import java.lang.reflect.Method; - public final class Compatibility { private final static int sdkVersion = Integer.parseInt(Build.VERSION.SDK); private final static boolean isLevel8 = sdkVersion >= 8; private final static boolean isLevel5 = sdkVersion >= 5; - private static Method dataChangedMethod = null; - private static Method getRotationMethod = null; - private static AndroidLevel11Interface level11; + private final static AndroidLevel8Interface level8; + private final static AndroidLevel11Interface level11; static { if (isLevel8) { - try { - final Class<?> cl = Class.forName("cgeo.geocaching.compatibility.AndroidLevel8"); - dataChangedMethod = cl.getDeclaredMethod("dataChanged", String.class); - getRotationMethod = cl.getDeclaredMethod("getRotation", Activity.class); - } catch (final Exception e) { - // Exception can be ClassNotFoundException, SecurityException or NoSuchMethodException - Log.e(Settings.tag, "Cannot load AndroidLevel8 class", e); - } + level8 = new AndroidLevel8(); + } + else { + level8 = new AndroidLevel8Dummy(); } if (sdkVersion >= 11) { level11 = new AndroidLevel11(); @@ -49,7 +42,7 @@ public final class Compatibility { final Activity activity) { if (isLevel8) { try { - final int rotation = (Integer) getRotationMethod.invoke(null, activity); + final int rotation = level8.getRotation(activity); if (rotation == Surface.ROTATION_90) { return directionNowPre + 90; } else if (rotation == Surface.ROTATION_180) { @@ -81,14 +74,7 @@ public final class Compatibility { } public static void dataChanged(final String name) { - if (isLevel8) { - try { - dataChangedMethod.invoke(null, name); - } catch (final Exception e) { - // This should never happen: IllegalArgumentException, IllegalAccessException or InvocationTargetException - Log.e(Settings.tag, "Cannot call dataChanged()", e); - } - } + level8.dataChanged(name); } public static void disableSuggestions(EditText edit) { |