From 2b4f5f538b2223748b3db9ba0d3b11a5c1e1247c Mon Sep 17 00:00:00 2001 From: Samuel Tardieu Date: Thu, 28 Aug 2014 11:14:12 +0200 Subject: Enable hardware-acceleration in software (#2803) This should not change the current behaviour, but toggles hardware acceleration from the code rather than from the manifest. --- main/AndroidManifest.xml | 3 ++- main/src/cgeo/geocaching/activity/AbstractActivity.java | 2 +- main/src/cgeo/geocaching/activity/AbstractListActivity.java | 2 +- main/src/cgeo/geocaching/activity/ActivityMixin.java | 10 ++++++++-- main/src/cgeo/geocaching/maps/CGeoMap.java | 2 +- main/src/cgeo/geocaching/settings/Settings.java | 4 ++++ 6 files changed, 17 insertions(+), 6 deletions(-) diff --git a/main/AndroidManifest.xml b/main/AndroidManifest.xml index de91a06..94c23c9 100644 --- a/main/AndroidManifest.xml +++ b/main/AndroidManifest.xml @@ -39,7 +39,8 @@ android:backupAgent="cgeo.geocaching.backup.CentralBackupAgent" android:icon="@drawable/cgeo" android:label="@string/app_name" - android:theme="@style/cgeo" > + android:theme="@style/cgeo" + android:hardwareAccelerated="false"> diff --git a/main/src/cgeo/geocaching/activity/AbstractActivity.java b/main/src/cgeo/geocaching/activity/AbstractActivity.java index 313959a..4fe750a 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 8e2bbd2..a529552 100644 --- a/main/src/cgeo/geocaching/maps/CGeoMap.java +++ b/main/src/cgeo/geocaching/maps/CGeoMap.java @@ -454,7 +454,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 01ebd6f..efebadf 100644 --- a/main/src/cgeo/geocaching/settings/Settings.java +++ b/main/src/cgeo/geocaching/settings/Settings.java @@ -1034,4 +1034,8 @@ public class Settings { history.add(0, geocode); putString(R.string.pref_caches_history, StringUtils.join(history, HISTORY_SEPARATOR)); } + + public static boolean useHardwareAcceleration() { + return true; + } } -- cgit v1.1 From 78e790ebeb3f0b3792ed46ccbefdfbb33bfa4be0 Mon Sep 17 00:00:00 2001 From: Samuel Tardieu Date: Thu, 28 Aug 2014 11:31:09 +0200 Subject: Make hardware acceleration optional (#2803) --- main/res/values/preference_keys.xml | 1 + main/res/values/strings.xml | 3 +++ main/res/xml/preferences.xml | 10 ++++++++++ main/src/cgeo/geocaching/settings/Settings.java | 6 +++++- 4 files changed, 19 insertions(+), 1 deletion(-) diff --git a/main/res/values/preference_keys.xml b/main/res/values/preference_keys.xml index 72d7c61..06fbcbe 100644 --- a/main/res/values/preference_keys.xml +++ b/main/res/values/preference_keys.xml @@ -179,4 +179,5 @@ pref_appearance changelog_last_checksum caches_history + hardware_acceleration diff --git a/main/res/values/strings.xml b/main/res/values/strings.xml index 381e07e..4611811 100644 --- a/main/res/values/strings.xml +++ b/main/res/values/strings.xml @@ -530,6 +530,9 @@ Create memory dump Memory dump Memory dumped to %s + Hardware accelerated rendering + Hardware acceleration renders graphical elements faster on the screen. However on some devices the Android operating system contains bugs and some text may appear blurred (notably bold characters). Disable hardware acceleration if this happens to you. + Enable hardware acceleration Open website Settings Information diff --git a/main/res/xml/preferences.xml b/main/res/xml/preferences.xml index 6226ebf..59055ca 100644 --- a/main/res/xml/preferences.xml +++ b/main/res/xml/preferences.xml @@ -745,6 +745,16 @@ android:key="@string/pref_fakekey_preference_maintenance_directories" android:title="@string/init_maintenance_directories" /> + + + + + Date: Thu, 28 Aug 2014 11:54:07 +0200 Subject: Disable hardware acceleration on some devices (#2803) The HTC One X and the Samsung S3 mini have trouble rendering bold text in hardware accelerated mode. On those devices, the default is to not enable hardware acceleration. --- main/res/xml/preferences.xml | 1 - main/src/cgeo/geocaching/settings/Settings.java | 7 ++++++- main/src/cgeo/geocaching/settings/SettingsActivity.java | 9 +++++++++ 3 files changed, 15 insertions(+), 2 deletions(-) diff --git a/main/res/xml/preferences.xml b/main/res/xml/preferences.xml index 59055ca..1ed739d 100644 --- a/main/res/xml/preferences.xml +++ b/main/res/xml/preferences.xml @@ -751,7 +751,6 @@ android:text="@string/init_hardware_acceleration_note" /> diff --git a/main/src/cgeo/geocaching/settings/Settings.java b/main/src/cgeo/geocaching/settings/Settings.java index 16050cb..7d3bf9c 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 @@ -1036,7 +1041,7 @@ public class Settings { } public static boolean useHardwareAcceleration() { - return getBoolean(R.string.pref_hardware_acceleration, true); + return getBoolean(R.string.pref_hardware_acceleration, !HW_ACCEL_DISABLED_BY_DEFAULT); } public static boolean setUseHardwareAcceleration(final boolean useHardwareAcceleration) { diff --git a/main/src/cgeo/geocaching/settings/SettingsActivity.java b/main/src/cgeo/geocaching/settings/SettingsActivity.java index 98ca4bf..94f5909 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; @@ -129,6 +131,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, @@ -378,6 +381,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); -- cgit v1.1