aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--main/AndroidManifest.xml3
-rw-r--r--main/res/values/preference_keys.xml1
-rw-r--r--main/res/values/strings.xml3
-rw-r--r--main/res/xml/preferences.xml9
-rw-r--r--main/src/cgeo/geocaching/activity/AbstractActivity.java2
-rw-r--r--main/src/cgeo/geocaching/activity/AbstractListActivity.java2
-rw-r--r--main/src/cgeo/geocaching/activity/ActivityMixin.java10
-rw-r--r--main/src/cgeo/geocaching/maps/CGeoMap.java2
-rw-r--r--main/src/cgeo/geocaching/settings/Settings.java13
-rw-r--r--main/src/cgeo/geocaching/settings/SettingsActivity.java9
10 files changed, 48 insertions, 6 deletions
diff --git a/main/AndroidManifest.xml b/main/AndroidManifest.xml
index 2d814ba..20db392 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">
<uses-library
android:name="com.google.android.maps"
android:required="false" />
diff --git a/main/res/values/preference_keys.xml b/main/res/values/preference_keys.xml
index e8840f5..2fe8774 100644
--- a/main/res/values/preference_keys.xml
+++ b/main/res/values/preference_keys.xml
@@ -180,4 +180,5 @@
<string name="pref_appearance">pref_appearance</string>
<string name="pref_changelog_last_checksum">changelog_last_checksum</string>
<string name="pref_caches_history">caches_history</string>
+ <string name="pref_hardware_acceleration">hardware_acceleration</string>
</resources>
diff --git a/main/res/values/strings.xml b/main/res/values/strings.xml
index 32249dd..c4cfb85 100644
--- a/main/res/values/strings.xml
+++ b/main/res/values/strings.xml
@@ -538,6 +538,9 @@
<string name="init_create_memory_dump">Create memory dump</string>
<string name="init_memory_dump">Memory dump</string>
<string name="init_memory_dumped">Memory dumped to %s</string>
+ <string name="init_hardware_acceleration_title">Hardware accelerated rendering</string>
+ <string name="init_hardware_acceleration_note">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.</string>
+ <string name="init_hardware_acceleration">Enable hardware acceleration</string>
<string name="settings_open_website">Open website</string>
<string name="settings_settings">Settings</string>
<string name="settings_information">Information</string>
diff --git a/main/res/xml/preferences.xml b/main/res/xml/preferences.xml
index 82c8f13..78d79bd 100644
--- a/main/res/xml/preferences.xml
+++ b/main/res/xml/preferences.xml
@@ -764,6 +764,15 @@
android:key="@string/pref_lowpowermode"
android:title="@string/init_low_power_mode" />
</PreferenceCategory>
+ <PreferenceCategory android:title="@string/init_hardware_acceleration_title">
+ <cgeo.geocaching.settings.TextPreference
+ android:layout="@layout/text_preference"
+ android:text="@string/init_hardware_acceleration_note" />
+
+ <CheckBoxPreference
+ android:key="@string/pref_hardware_acceleration"
+ android:title="@string/init_hardware_acceleration" />
+ </PreferenceCategory>
<PreferenceCategory android:title="@string/init_debug_title" >
<cgeo.geocaching.settings.TextPreference
android:layout="@layout/text_preference"
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);