OCR Configurable  1.0
 Todo Clases Namespaces Archivos Funciones Variables
PreferencesActivity.java
Ir a la documentación de este archivo.
00001 /*
00002  * Copyright (C) 2008 ZXing authors
00003  * Copyright 2011 Robert Theis
00004  * Copyright 2012 Jaime Navarro Santapau
00005  *
00006  * Licensed under the Apache License, Version 2.0 (the "License");
00007  * you may not use this file except in compliance with the License.
00008  * You may obtain a copy of the License at
00009  *
00010  *      http://www.apache.org/licenses/LICENSE-2.0
00011  *
00012  * Unless required by applicable law or agreed to in writing, software
00013  * distributed under the License is distributed on an "AS IS" BASIS,
00014  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
00015  * See the License for the specific language governing permissions and
00016  * limitations under the License.
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                                         // Set the summary text for the source language name
00143                                         listPreferenceSourceLanguage
00144                                                         .setSummary(LanguageCodeHelper.getOcrLanguageName(
00145                                                                         getBaseContext(),
00146                                                                         sharedPreferences
00147                                                                                         .getString(
00148                                                                                                         key,
00149                                                                                                         CaptureActivityForOcr.DEFAULT_SOURCE_LANGUAGE_CODE)));
00150 
00151                                         // Retrieve the character blacklist/whitelist for the new
00152                                         // language
00153                                         String blacklist = OcrCharacterHelper.getBlacklist(
00154                                                         sharedPreferences,
00155                                                         listPreferenceSourceLanguage.getValue());
00156                                         String whitelist = OcrCharacterHelper.getWhitelist(
00157                                                         sharedPreferences,
00158                                                         listPreferenceSourceLanguage.getValue());
00159 
00160                                         // Save the character blacklist/whitelist to preferences
00161                                         sharedPreferences.edit()
00162                                                         .putString(KEY_CHARACTER_BLACKLIST, blacklist)
00163                                                         .commit();
00164                                         sharedPreferences.edit()
00165                                                         .putString(KEY_CHARACTER_WHITELIST, whitelist)
00166                                                         .commit();
00167 
00168                                         // Set the blacklist/whitelist summary text
00169                                         editTextPreferenceCharacterBlacklist.setSummary(blacklist);
00170                                         editTextPreferenceCharacterWhitelist.setSummary(whitelist);
00171 
00172                                 }
00173 
00174                         } else {
00175                                 // Set the summary text for the source language name
00176                                 listPreferenceSourceLanguage
00177                                                 .setSummary(LanguageCodeHelper.getOcrLanguageName(
00178                                                                 getBaseContext(),
00179                                                                 sharedPreferences
00180                                                                                 .getString(
00181                                                                                                 key,
00182                                                                                                 CaptureActivityForOcr.DEFAULT_SOURCE_LANGUAGE_CODE)));
00183 
00184                                 // Retrieve the character blacklist/whitelist for the new
00185                                 // language
00186                                 String blacklist = OcrCharacterHelper.getBlacklist(
00187                                                 sharedPreferences,
00188                                                 listPreferenceSourceLanguage.getValue());
00189                                 String whitelist = OcrCharacterHelper.getWhitelist(
00190                                                 sharedPreferences,
00191                                                 listPreferenceSourceLanguage.getValue());
00192 
00193                                 // Save the character blacklist/whitelist to preferences
00194                                 sharedPreferences.edit()
00195                                                 .putString(KEY_CHARACTER_BLACKLIST, blacklist).commit();
00196                                 sharedPreferences.edit()
00197                                                 .putString(KEY_CHARACTER_WHITELIST, whitelist).commit();
00198 
00199                                 // Set the blacklist/whitelist summary text
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                         // Save a separate, language-specific character blacklist for this
00211                         // language
00212                         OcrCharacterHelper.setBlacklist(sharedPreferences,
00213                                         listPreferenceSourceLanguage.getValue(),
00214                                         sharedPreferences.getString(key, OcrCharacterHelper
00215                                                         .getDefaultBlacklist(listPreferenceSourceLanguage
00216                                                                         .getValue())));
00217 
00218                         // Set the summary text
00219                         editTextPreferenceCharacterBlacklist.setSummary(sharedPreferences
00220                                         .getString(key, OcrCharacterHelper
00221                                                         .getDefaultBlacklist(listPreferenceSourceLanguage
00222                                                                         .getValue())));
00223 
00224                 } else if (key.equals(KEY_CHARACTER_WHITELIST)) {
00225 
00226                         // Save a separate, language-specific character blacklist for this
00227                         // language
00228                         OcrCharacterHelper.setWhitelist(sharedPreferences,
00229                                         listPreferenceSourceLanguage.getValue(),
00230                                         sharedPreferences.getString(key, OcrCharacterHelper
00231                                                         .getDefaultWhitelist(listPreferenceSourceLanguage
00232                                                                         .getValue())));
00233 
00234                         // Set the summary text
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                 // Set up the initial summary values
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                 // Set up a listener whenever a key changes
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 }
 Todo Clases Namespaces Archivos Funciones Variables