Ir a la documentación de este archivo.00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00026 package edu.uoc.ocr;
00027
00028
00029 import java.io.File;
00030
00031 import edu.uoc.ocr.R;
00032 import edu.uoc.ocr.LanguageCodeHelper;
00033
00034 import android.app.AlertDialog;
00035 import android.content.SharedPreferences;
00036 import android.content.SharedPreferences.OnSharedPreferenceChangeListener;
00037 import android.os.Bundle;
00038 import android.os.Environment;
00039 import android.preference.EditTextPreference;
00040 import android.preference.ListPreference;
00041 import android.preference.PreferenceActivity;
00042 import android.preference.PreferenceManager;
00043
00052 public class PreferencesActivity extends PreferenceActivity implements
00053 OnSharedPreferenceChangeListener {
00054
00055 public static final String KEY_SOURCE_LANGUAGE_PREFERENCE = "sourceLanguageCodeOcrPref";
00056 public static final String KEY_CHARACTER_BLACKLIST = "preference_character_blacklist";
00057 public static final String KEY_CHARACTER_WHITELIST = "preference_character_whitelist";
00058 public static final String KEY_PAGE_SEGMENTATION_MODE = "preference_page_segmentation_mode";
00059
00060 public static final String KEY_AUTO_FOCUS = "preferences_auto_focus";
00061 public static final String KEY_TOGGLE_LIGHT = "preference_toggle_light";
00062 public static final String KEY_PLAY_BEEP = "preferences_play_beep";
00063
00064 public static final String KEY_HELP_VERSION_SHOWN = "preferences_help_version_shown";
00065 public static final String KEY_NOT_OUR_RESULTS_SHOWN = "preferences_not_our_results_shown";
00066 public static final String KEY_REVERSE_IMAGE = "preferences_reverse_image";
00067
00068 public static final String KEY_VIBRATE = "preferences_vibrate";
00069
00070 private ListPreference listPreferenceSourceLanguage;
00071
00072 private EditTextPreference editTextPreferenceCharacterBlacklist;
00073 private EditTextPreference editTextPreferenceCharacterWhitelist;
00074 private ListPreference listPreferencePageSegmentationMode;
00075
00076 private static SharedPreferences sharedPreferences;
00077
00085 @Override
00086 protected void onCreate(Bundle savedInstanceState) {
00087 super.onCreate(savedInstanceState);
00088 addPreferencesFromResource(R.xml.preferences);
00089
00090 sharedPreferences = PreferenceManager.getDefaultSharedPreferences(this);
00091
00092 listPreferenceSourceLanguage = (ListPreference) getPreferenceScreen()
00093 .findPreference(KEY_SOURCE_LANGUAGE_PREFERENCE);
00094
00095 editTextPreferenceCharacterBlacklist = (EditTextPreference) getPreferenceScreen()
00096 .findPreference(KEY_CHARACTER_BLACKLIST);
00097 editTextPreferenceCharacterWhitelist = (EditTextPreference) getPreferenceScreen()
00098 .findPreference(KEY_CHARACTER_WHITELIST);
00099 listPreferencePageSegmentationMode = (ListPreference) getPreferenceScreen()
00100 .findPreference(KEY_PAGE_SEGMENTATION_MODE);
00101
00102 }
00103
00115 @Override
00116 public void onSharedPreferenceChanged(SharedPreferences sharedPreferences,
00117 String key) {
00118
00119 if (key.equals(KEY_SOURCE_LANGUAGE_PREFERENCE)) {
00120
00121 File appDir = getExternalFilesDir(Environment.MEDIA_MOUNTED);
00122
00123 if (LanguageCodeHelper.getOcrLanguageName(
00124 getBaseContext(),
00125 sharedPreferences.getString(key,
00126 CaptureActivityForOcr.DEFAULT_SOURCE_LANGUAGE_CODE))
00127 .contentEquals(getString(R.string.patron_manual))) {
00128 File tesseractTestFile = new File(appDir, "tessdata"
00129 + File.separator + CaptureActivityForOcr.MANUAL_FILENAME_BASE);
00130 if (!tesseractTestFile.exists()) {
00131
00132 new AlertDialog.Builder(this)
00133 .setTitle(getString(R.string.dialogo_8))
00134 .setMessage(getString(R.string.dialogo_9))
00135 .show();
00136
00137 listPreferenceSourceLanguage.setValueIndex(1);
00138 listPreferenceSourceLanguage.setSummary("Patrón Español");
00139
00140 } else {
00141
00142
00143 listPreferenceSourceLanguage
00144 .setSummary(LanguageCodeHelper.getOcrLanguageName(
00145 getBaseContext(),
00146 sharedPreferences
00147 .getString(
00148 key,
00149 CaptureActivityForOcr.DEFAULT_SOURCE_LANGUAGE_CODE)));
00150
00151
00152
00153 String blacklist = OcrCharacterHelper.getBlacklist(
00154 sharedPreferences,
00155 listPreferenceSourceLanguage.getValue());
00156 String whitelist = OcrCharacterHelper.getWhitelist(
00157 sharedPreferences,
00158 listPreferenceSourceLanguage.getValue());
00159
00160
00161 sharedPreferences.edit()
00162 .putString(KEY_CHARACTER_BLACKLIST, blacklist)
00163 .commit();
00164 sharedPreferences.edit()
00165 .putString(KEY_CHARACTER_WHITELIST, whitelist)
00166 .commit();
00167
00168
00169 editTextPreferenceCharacterBlacklist.setSummary(blacklist);
00170 editTextPreferenceCharacterWhitelist.setSummary(whitelist);
00171
00172 }
00173
00174 } else {
00175
00176 listPreferenceSourceLanguage
00177 .setSummary(LanguageCodeHelper.getOcrLanguageName(
00178 getBaseContext(),
00179 sharedPreferences
00180 .getString(
00181 key,
00182 CaptureActivityForOcr.DEFAULT_SOURCE_LANGUAGE_CODE)));
00183
00184
00185
00186 String blacklist = OcrCharacterHelper.getBlacklist(
00187 sharedPreferences,
00188 listPreferenceSourceLanguage.getValue());
00189 String whitelist = OcrCharacterHelper.getWhitelist(
00190 sharedPreferences,
00191 listPreferenceSourceLanguage.getValue());
00192
00193
00194 sharedPreferences.edit()
00195 .putString(KEY_CHARACTER_BLACKLIST, blacklist).commit();
00196 sharedPreferences.edit()
00197 .putString(KEY_CHARACTER_WHITELIST, whitelist).commit();
00198
00199
00200 editTextPreferenceCharacterBlacklist.setSummary(blacklist);
00201 editTextPreferenceCharacterWhitelist.setSummary(whitelist);
00202 }
00203 } else if (key.equals(KEY_PAGE_SEGMENTATION_MODE)) {
00204 listPreferencePageSegmentationMode.setSummary(sharedPreferences
00205 .getString(key,
00206 CaptureActivityForOcr.DEFAULT_PAGE_SEGMENTATION_MODE));
00207
00208 } else if (key.equals(KEY_CHARACTER_BLACKLIST)) {
00209
00210
00211
00212 OcrCharacterHelper.setBlacklist(sharedPreferences,
00213 listPreferenceSourceLanguage.getValue(),
00214 sharedPreferences.getString(key, OcrCharacterHelper
00215 .getDefaultBlacklist(listPreferenceSourceLanguage
00216 .getValue())));
00217
00218
00219 editTextPreferenceCharacterBlacklist.setSummary(sharedPreferences
00220 .getString(key, OcrCharacterHelper
00221 .getDefaultBlacklist(listPreferenceSourceLanguage
00222 .getValue())));
00223
00224 } else if (key.equals(KEY_CHARACTER_WHITELIST)) {
00225
00226
00227
00228 OcrCharacterHelper.setWhitelist(sharedPreferences,
00229 listPreferenceSourceLanguage.getValue(),
00230 sharedPreferences.getString(key, OcrCharacterHelper
00231 .getDefaultWhitelist(listPreferenceSourceLanguage
00232 .getValue())));
00233
00234
00235 editTextPreferenceCharacterWhitelist.setSummary(sharedPreferences
00236 .getString(key, OcrCharacterHelper
00237 .getDefaultWhitelist(listPreferenceSourceLanguage
00238 .getValue())));
00239
00240 }
00241
00242 }
00243
00248 @Override
00249 protected void onResume() {
00250 super.onResume();
00251
00252 listPreferenceSourceLanguage.setSummary(LanguageCodeHelper
00253 .getOcrLanguageName(getBaseContext(), sharedPreferences
00254 .getString(KEY_SOURCE_LANGUAGE_PREFERENCE,
00255 CaptureActivityForOcr.DEFAULT_SOURCE_LANGUAGE_CODE)));
00256 listPreferencePageSegmentationMode.setSummary(sharedPreferences
00257 .getString(KEY_PAGE_SEGMENTATION_MODE,
00258 CaptureActivityForOcr.DEFAULT_PAGE_SEGMENTATION_MODE));
00259 editTextPreferenceCharacterBlacklist.setSummary(sharedPreferences
00260 .getString(KEY_CHARACTER_BLACKLIST, OcrCharacterHelper
00261 .getDefaultBlacklist(listPreferenceSourceLanguage
00262 .getValue())));
00263 editTextPreferenceCharacterWhitelist.setSummary(sharedPreferences
00264 .getString(KEY_CHARACTER_WHITELIST, OcrCharacterHelper
00265 .getDefaultWhitelist(listPreferenceSourceLanguage
00266 .getValue())));
00267
00268
00269 getPreferenceScreen().getSharedPreferences()
00270 .registerOnSharedPreferenceChangeListener(this);
00271 }
00272
00277 @Override
00278 protected void onPause() {
00279 super.onPause();
00280 getPreferenceScreen().getSharedPreferences()
00281 .unregisterOnSharedPreferenceChangeListener(this);
00282 }
00283 }