diff options
Diffstat (limited to 'main/src')
6 files changed, 33 insertions, 5 deletions
diff --git a/main/src/cgeo/geocaching/activity/AbstractActivity.java b/main/src/cgeo/geocaching/activity/AbstractActivity.java index fbe9aca..603211e 100644 --- a/main/src/cgeo/geocaching/activity/AbstractActivity.java +++ b/main/src/cgeo/geocaching/activity/AbstractActivity.java @@ -146,7 +146,7 @@ public abstract class AbstractActivity extends ActionBarActivity implements IAbs // only needed in some activities, but implemented in super class nonetheless Cookies.restoreCookieStore(Settings.getCookieStore()); - ActivityMixin.keepScreenOn(this, keepScreenOn); + ActivityMixin.onCreate(this, keepScreenOn); } @Override diff --git a/main/src/cgeo/geocaching/activity/AbstractListActivity.java b/main/src/cgeo/geocaching/activity/AbstractListActivity.java index 718dc70..d7482c3 100644 --- a/main/src/cgeo/geocaching/activity/AbstractListActivity.java +++ b/main/src/cgeo/geocaching/activity/AbstractListActivity.java @@ -67,7 +67,7 @@ public abstract class AbstractListActivity extends ActionBarListActivity impleme res = this.getResources(); app = (CgeoApplication) this.getApplication(); - ActivityMixin.keepScreenOn(this, keepScreenOn); + ActivityMixin.onCreate(this, keepScreenOn); } final protected void setTitle(final String title) { diff --git a/main/src/cgeo/geocaching/activity/ActivityMixin.java b/main/src/cgeo/geocaching/activity/ActivityMixin.java index 6bca871..28042b0 100644 --- a/main/src/cgeo/geocaching/activity/ActivityMixin.java +++ b/main/src/cgeo/geocaching/activity/ActivityMixin.java @@ -16,7 +16,9 @@ import android.support.v4.app.TaskStackBuilder; import android.support.v7.app.ActionBar; import android.support.v7.app.ActionBarActivity; import android.view.Gravity; +import android.view.Window; import android.view.WindowManager; +import android.view.WindowManager.LayoutParams; import android.widget.EditText; import android.widget.Toast; @@ -103,9 +105,13 @@ public final class ActivityMixin { postShowToast(activity, text, Toast.LENGTH_SHORT); } - public static void keepScreenOn(final Activity abstractActivity, final boolean keepScreenOn) { + public static void onCreate(final Activity abstractActivity, final boolean keepScreenOn) { + final Window window = abstractActivity.getWindow(); if (keepScreenOn) { - abstractActivity.getWindow().addFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON); + window.addFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON); + } + if (Settings.useHardwareAcceleration()) { + window.setFlags(LayoutParams.FLAG_HARDWARE_ACCELERATED, LayoutParams.FLAG_HARDWARE_ACCELERATED); } } diff --git a/main/src/cgeo/geocaching/maps/CGeoMap.java b/main/src/cgeo/geocaching/maps/CGeoMap.java index d64a1d8..0d24cc1 100644 --- a/main/src/cgeo/geocaching/maps/CGeoMap.java +++ b/main/src/cgeo/geocaching/maps/CGeoMap.java @@ -429,7 +429,7 @@ public class CGeoMap extends AbstractMap implements ViewFactory { // reset status noMapTokenShowed = false; - ActivityMixin.keepScreenOn(activity, true); + ActivityMixin.onCreate(activity, true); // set layout diff --git a/main/src/cgeo/geocaching/settings/Settings.java b/main/src/cgeo/geocaching/settings/Settings.java index fdcd94f..edc5f21 100644 --- a/main/src/cgeo/geocaching/settings/Settings.java +++ b/main/src/cgeo/geocaching/settings/Settings.java @@ -34,6 +34,7 @@ import android.content.SharedPreferences; import android.content.SharedPreferences.Editor; import android.content.res.Configuration; import android.content.res.Resources; +import android.os.Build; import android.os.Environment; import android.preference.PreferenceManager; @@ -53,6 +54,10 @@ public class Settings { public static final int SHOW_WP_THRESHOLD_MAX = 50; private static final int MAP_SOURCE_DEFAULT = GoogleMapProvider.GOOGLE_MAP_ID.hashCode(); + public static final boolean HW_ACCEL_DISABLED_BY_DEFAULT = + StringUtils.equals(Build.MODEL, "HTC One X") || // HTC One X + StringUtils.equals(Build.MODEL, "GT-I8190"); // Samsung S3 mini + private final static int unitsMetric = 1; // twitter api keys @@ -1033,4 +1038,12 @@ public class Settings { history.add(0, geocode); putString(R.string.pref_caches_history, StringUtils.join(history, HISTORY_SEPARATOR)); } + + public static boolean useHardwareAcceleration() { + return getBoolean(R.string.pref_hardware_acceleration, !HW_ACCEL_DISABLED_BY_DEFAULT); + } + + public static boolean setUseHardwareAcceleration(final boolean useHardwareAcceleration) { + return putBoolean(R.string.pref_hardware_acceleration, useHardwareAcceleration); + } } diff --git a/main/src/cgeo/geocaching/settings/SettingsActivity.java b/main/src/cgeo/geocaching/settings/SettingsActivity.java index 707a530..84cfae8 100644 --- a/main/src/cgeo/geocaching/settings/SettingsActivity.java +++ b/main/src/cgeo/geocaching/settings/SettingsActivity.java @@ -1,5 +1,7 @@ package cgeo.geocaching.settings; +import butterknife.ButterKnife; + import cgeo.geocaching.CgeoApplication; import cgeo.geocaching.DataStore; import cgeo.geocaching.Intents; @@ -130,6 +132,7 @@ public class SettingsActivity extends PreferenceActivity { initServicePreferences(); initNavigationMenuPreferences(); initMaintenanceButtons(); + initHardwareAccelerationPreferences(); for (final int k : new int[] { R.string.pref_username, R.string.pref_password, R.string.pref_pass_vote, R.string.pref_signature, @@ -380,6 +383,12 @@ public class SettingsActivity extends PreferenceActivity { }); } + public void initHardwareAccelerationPreferences() { + // We have to ensure that the preference is initialized so that devices with hardware acceleration disabled + // get the appropriate value. + getPreference(R.string.pref_hardware_acceleration).setDefaultValue(!Settings.HW_ACCEL_DISABLED_BY_DEFAULT); + } + private void initDbLocationPreference() { final Preference p = getPreference(R.string.pref_dbonsdcard); p.setPersistent(false); |
