1c0991bad280488a4b45b1819f8ac64a30820103dCharles Chen/* 2c0991bad280488a4b45b1819f8ac64a30820103dCharles Chen * Copyright (C) 2009 The Android Open Source Project 3c0991bad280488a4b45b1819f8ac64a30820103dCharles Chen * 4c0991bad280488a4b45b1819f8ac64a30820103dCharles Chen * Licensed under the Apache License, Version 2.0 (the "License"); 5c0991bad280488a4b45b1819f8ac64a30820103dCharles Chen * you may not use this file except in compliance with the License. 6c0991bad280488a4b45b1819f8ac64a30820103dCharles Chen * You may obtain a copy of the License at 7c0991bad280488a4b45b1819f8ac64a30820103dCharles Chen * 8c0991bad280488a4b45b1819f8ac64a30820103dCharles Chen * http://www.apache.org/licenses/LICENSE-2.0 9c0991bad280488a4b45b1819f8ac64a30820103dCharles Chen * 10c0991bad280488a4b45b1819f8ac64a30820103dCharles Chen * Unless required by applicable law or agreed to in writing, software 11c0991bad280488a4b45b1819f8ac64a30820103dCharles Chen * distributed under the License is distributed on an "AS IS" BASIS, 12c0991bad280488a4b45b1819f8ac64a30820103dCharles Chen * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13c0991bad280488a4b45b1819f8ac64a30820103dCharles Chen * See the License for the specific language governing permissions and 14c0991bad280488a4b45b1819f8ac64a30820103dCharles Chen * limitations under the License. 15c0991bad280488a4b45b1819f8ac64a30820103dCharles Chen */ 16c0991bad280488a4b45b1819f8ac64a30820103dCharles Chen 17c0991bad280488a4b45b1819f8ac64a30820103dCharles Chenpackage com.svox.pico; 18c0991bad280488a4b45b1819f8ac64a30820103dCharles Chen 19c0991bad280488a4b45b1819f8ac64a30820103dCharles Chenimport android.content.Intent; 20c0991bad280488a4b45b1819f8ac64a30820103dCharles Chenimport android.net.Uri; 21c0991bad280488a4b45b1819f8ac64a30820103dCharles Chenimport android.os.Bundle; 22c0991bad280488a4b45b1819f8ac64a30820103dCharles Chenimport android.preference.Preference; 23c0991bad280488a4b45b1819f8ac64a30820103dCharles Chenimport android.preference.PreferenceActivity; 24c0991bad280488a4b45b1819f8ac64a30820103dCharles Chenimport android.preference.Preference.OnPreferenceClickListener; 25d64ebdacdb42fcae607ce7942e810b6047f2368aCharles Chenimport android.speech.tts.TextToSpeech; 26c0991bad280488a4b45b1819f8ac64a30820103dCharles Chenimport android.util.Log; 27c0991bad280488a4b45b1819f8ac64a30820103dCharles Chen 28c0991bad280488a4b45b1819f8ac64a30820103dCharles Chenimport java.util.ArrayList; 29c0991bad280488a4b45b1819f8ac64a30820103dCharles Chenimport java.util.Locale; 30c0991bad280488a4b45b1819f8ac64a30820103dCharles Chen 31c0991bad280488a4b45b1819f8ac64a30820103dCharles Chen/* 32c0991bad280488a4b45b1819f8ac64a30820103dCharles Chen * Checks if the voice data for the SVOX Pico Engine is present on the 33c0991bad280488a4b45b1819f8ac64a30820103dCharles Chen * sd card. 34c0991bad280488a4b45b1819f8ac64a30820103dCharles Chen */ 35c0991bad280488a4b45b1819f8ac64a30820103dCharles Chenpublic class EngineSettings extends PreferenceActivity { 36c0991bad280488a4b45b1819f8ac64a30820103dCharles Chen private final static String MARKET_URI_START = "market://search?q=pname:com.svox.pico.voice."; 37c0991bad280488a4b45b1819f8ac64a30820103dCharles Chen private static final int VOICE_DATA_CHECK_CODE = 42; 38c0991bad280488a4b45b1819f8ac64a30820103dCharles Chen 39c0991bad280488a4b45b1819f8ac64a30820103dCharles Chen @Override 40c0991bad280488a4b45b1819f8ac64a30820103dCharles Chen protected void onCreate(Bundle savedInstanceState) { 41c0991bad280488a4b45b1819f8ac64a30820103dCharles Chen super.onCreate(savedInstanceState); 42c0991bad280488a4b45b1819f8ac64a30820103dCharles Chen 43c0991bad280488a4b45b1819f8ac64a30820103dCharles Chen Intent i = new Intent(); 44c0991bad280488a4b45b1819f8ac64a30820103dCharles Chen i.setClass(this, CheckVoiceData.class); 45c0991bad280488a4b45b1819f8ac64a30820103dCharles Chen startActivityForResult(i, VOICE_DATA_CHECK_CODE); 46c0991bad280488a4b45b1819f8ac64a30820103dCharles Chen } 47c0991bad280488a4b45b1819f8ac64a30820103dCharles Chen 48c0991bad280488a4b45b1819f8ac64a30820103dCharles Chen @Override 49c0991bad280488a4b45b1819f8ac64a30820103dCharles Chen public void onActivityResult(int requestCode, int resultCode, Intent data){ 50c0991bad280488a4b45b1819f8ac64a30820103dCharles Chen if (requestCode == VOICE_DATA_CHECK_CODE){ 51d64ebdacdb42fcae607ce7942e810b6047f2368aCharles Chen ArrayList<String> available = data.getStringArrayListExtra(TextToSpeech.Engine.EXTRA_AVAILABLE_VOICES); 52d64ebdacdb42fcae607ce7942e810b6047f2368aCharles Chen ArrayList<String> unavailable = data.getStringArrayListExtra(TextToSpeech.Engine.EXTRA_UNAVAILABLE_VOICES); 53c0991bad280488a4b45b1819f8ac64a30820103dCharles Chen 54c0991bad280488a4b45b1819f8ac64a30820103dCharles Chen addPreferencesFromResource(R.xml.voices_list); 55c0991bad280488a4b45b1819f8ac64a30820103dCharles Chen 56c0991bad280488a4b45b1819f8ac64a30820103dCharles Chen for (int i = 0; i < available.size(); i++){ 57c0991bad280488a4b45b1819f8ac64a30820103dCharles Chen Log.e("debug", available.get(i)); 58c0991bad280488a4b45b1819f8ac64a30820103dCharles Chen String[] languageCountry = available.get(i).split("-"); 59c0991bad280488a4b45b1819f8ac64a30820103dCharles Chen Locale loc = new Locale(languageCountry[0], languageCountry[1]); 60c0991bad280488a4b45b1819f8ac64a30820103dCharles Chen Preference pref = findPreference(available.get(i)); 61c0991bad280488a4b45b1819f8ac64a30820103dCharles Chen pref.setTitle(loc.getDisplayLanguage() + " (" + loc.getDisplayCountry() + ")"); 62c0991bad280488a4b45b1819f8ac64a30820103dCharles Chen pref.setSummary(R.string.installed); 63c0991bad280488a4b45b1819f8ac64a30820103dCharles Chen pref.setEnabled(false); 64c0991bad280488a4b45b1819f8ac64a30820103dCharles Chen } 65c0991bad280488a4b45b1819f8ac64a30820103dCharles Chen 66c0991bad280488a4b45b1819f8ac64a30820103dCharles Chen 67c0991bad280488a4b45b1819f8ac64a30820103dCharles Chen for (int i = 0; i < unavailable.size(); i++){ 68c0991bad280488a4b45b1819f8ac64a30820103dCharles Chen final String unavailableLang = unavailable.get(i); 69c0991bad280488a4b45b1819f8ac64a30820103dCharles Chen String[] languageCountry = unavailableLang.split("-"); 70c0991bad280488a4b45b1819f8ac64a30820103dCharles Chen Locale loc = new Locale(languageCountry[0], languageCountry[1]); 71c0991bad280488a4b45b1819f8ac64a30820103dCharles Chen Preference pref = findPreference(unavailableLang); 72c0991bad280488a4b45b1819f8ac64a30820103dCharles Chen pref.setTitle(loc.getDisplayLanguage() + " (" + loc.getDisplayCountry() + ")"); 73c0991bad280488a4b45b1819f8ac64a30820103dCharles Chen pref.setSummary(R.string.not_installed); 74c0991bad280488a4b45b1819f8ac64a30820103dCharles Chen pref.setEnabled(true); 75c0991bad280488a4b45b1819f8ac64a30820103dCharles Chen pref.setOnPreferenceClickListener(new OnPreferenceClickListener(){ 76c0991bad280488a4b45b1819f8ac64a30820103dCharles Chen public boolean onPreferenceClick(Preference preference) { 77c0991bad280488a4b45b1819f8ac64a30820103dCharles Chen Uri marketUri = Uri.parse(MARKET_URI_START + unavailableLang.toLowerCase().replace("-", ".")); 78c0991bad280488a4b45b1819f8ac64a30820103dCharles Chen Intent marketIntent = new Intent(Intent.ACTION_VIEW, marketUri); 79c0991bad280488a4b45b1819f8ac64a30820103dCharles Chen startActivity(marketIntent); 80c0991bad280488a4b45b1819f8ac64a30820103dCharles Chen return false; 81c0991bad280488a4b45b1819f8ac64a30820103dCharles Chen } 82c0991bad280488a4b45b1819f8ac64a30820103dCharles Chen }); 83c0991bad280488a4b45b1819f8ac64a30820103dCharles Chen } 84c0991bad280488a4b45b1819f8ac64a30820103dCharles Chen } 85c0991bad280488a4b45b1819f8ac64a30820103dCharles Chen } 86c0991bad280488a4b45b1819f8ac64a30820103dCharles Chen 87c0991bad280488a4b45b1819f8ac64a30820103dCharles Chen 88c0991bad280488a4b45b1819f8ac64a30820103dCharles Chen} 89