Il est possible de déterminer par le code qui packages langue sont actuellement installés sur un périphérique? J'ai essayé ceci:
public class LanguageDetailsChecker extends BroadcastReceiver { private List<String> supportedLanguages; @Override public void onReceive(Context context, Intent intent) { Bundle results = getResultExtras(true); if (results.containsKey(RecognizerIntent.EXTRA_SUPPORTED_LANGUAGES)) { supportedLanguages =results.getStringArrayList(RecognizerIntent.EXTRA_SUPPORTED_LANGUAGES); Log.d("TAG","languages: " + supportedLanguages); } } }
3 Réponses :
Si vous avez la racine (désolé), vous pouvez le faire de cette façon: ceci a été déchiré de l'Android 4.2.2 reconnaître.java source et modifié: p> J'aurais la liste complète, tout comme vous l'êtes et la boucle à travers eux pour vérifier lesquelles sont disponibles hors ligne. J'ai vérifié le dossier bien sûr, le côté bas est que cela ne fonctionne que pour la racine, alors je ne suis pas sûr de la façon dont cela vous sera utile. Je ne sais vraiment pas quoi dire pour la non-racine, je ne trouve rien. P> EDIT: Sorti de curiosité, cependant, qu'est-ce que les extra_supported_languages contiennent si vous sont < / em> hors ligne? Si cela revient correctement, vous devez simplement avoir à simuler le gestionnaire de réseau. P> p>
/ system / srec / user / srec / config / code> sur deux périphériques, et ils correspondent tous les deux aux dictionnaires que j'ai installés. P>
Contient: Langues: [Af-ZA, ID-ID, MS-My, CA-ES, CS-CZ, DE-DE-DE, EN-AU-AUT, EN-CA, EN-001, EN-IN-IN-IN-IN-IN-IN-IN-in -Za, EN-GB, EN-US, ES-CL, ES-CO, ES-CR, ES-EC, ES-US, ES-SV, ES-ES, ES-GT , es-hn, es-mx, es-n, es-pa, es-py, es-PE, es-pr, es-do, es-uy, es-ve, eu-es, fil-ph, fr -Fr, GL-ES, HR-HR, Zu-ZA, IS-IS-IT-IT-IT, HU-HU, NL-NL, NB-NO, PL-PL, PT-BR, PT-PT, RO-RO , SK-SK, FI-FI, SV-SE, VI-VN, TR-TR, BG-BG, RU-RU, SR-RS, UK-UA, He-Il, Ar-il, Ar-Jo, AR -Ae, AR-BH, AR-SA, AR-KW, AR-OM, AR-PS, AR-QA, AR-LB, Ar-EG, KO-KR, CMN-HANS-CN, CMN-HANS-HANS , CMN-Hant-Tw, Yue-Hant-HK, JA-JP, LA]
Qui sont toutes les langues disponibles. Contient ES-ES, EN-US et EN-GB, qui sont les langues que j'ai actuellement installées
Je vois, alors faisant semblant une situation "sans réseau" ne fonctionnerait pas. Je ne sais pas quoi vous dire à part la solution racine, alors. Peut-être que quelqu'un d'autre trouvera quelque chose.
Vérifiez cet exemple:
public class SpeakingAndroid extends Activity implements OnInitListener { //TTS object private TextToSpeech myTTS; //status check code private int TS_CHECK_CODE = 0; //create the Activity public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); //check for TTS data Intent checkTTSIntent = new Intent(); checkTTSIntent.setAction(TextToSpeech.Engine.ACTION_CHECK_TTS_DATA); startActivityForResult(checkTTSIntent, TS_CHECK_CODE); } //act on result of TTS data check protected void onActivityResult(int requestCode, int resultCode, Intent data) { if (requestCode == MY_DATA_CHECK_CODE) { if (resultCode == TextToSpeech.Engine.CHECK_VOICE_DATA_PASS) { //the user has the necessary data - create the TTS myTTS = new TextToSpeech(this, this); } else { //no data - install it now Intent installTTSIntent = new Intent(); installTTSIntent.setAction(TextToSpeech.Engine.ACTION_INSTALL_TTS_DATA); startActivity(installTTSIntent); } } } //setup TTS public void onInit(int initStatus) { //check for successful instantiation if (initStatus == TextToSpeech.SUCCESS) { if(myTTS.isLanguageAvailable(Locale.US)==TextToSpeech.LANG_AVAILABLE) myTTS.setLanguage(Locale.US); } else if (initStatus == TextToSpeech.ERROR) { Toast.makeText(this, "Sorry! Text To Speech failed...", Toast.LENGTH_LONG).show(); } } }
Votre réponse concerne le texte de discours, non (hors ligne) à texte.
Vous devez simplement essayer ceci:
for (Locale locale : Locale.getAvailableLocales()) { try { if (tts != null) { if (locale != null && locale.getISO3Country() != null && locale.getISO3Language() != null && tts.isLanguageAvailable(locale) == 1) { available_locs.add(locale); tts.setLanguage((Locale) locale); if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) { if (tts.getVoice().getFeatures().contains(TextToSpeech.Engine.KEY_FEATURE_NOT_INSTALLED)) { Log.i(TAG, "[onInit]contains:IF " + locale.getDisplayName()); } else { Log.i(TAG, "***********[onInit]contains:ELSE " + locale.getDisplayName()); } } else { /*not supported 21 below sdk so hide progressbar and hide spinner and only TTs in default language */ Log.i(TAG,"Not supported"); } } } } catch (Exception e) { Log.i(TAG, "[onViewCreated] " + e.getLocalizedMessage()); } }
Essayez ceci- http://sourceforge.net/p/dictionarymid/ Code / Tête / Tree / Trunk / Android / pourrait être utile pour vous, bonne chance
Quel service de reconnaissance vocale testez-vous?
La reconnaissance de la part de Google prend en charge des dizaines de langues. Que voulez-vous dire exactement que vous n'avez que l'anglais britannique / américain et espagnol installé?
Vous pouvez installer des packs de langue hors ligne, donc aucune connexion à Google n'est nécessaire. J'ai besoin de savoir quelles langues sont installées
Je vois. Je pense que vous ne pouvez pas savoir quels packs de langue sont disponibles pour une utilisation hors connexion, car c'est quelque chose de spécifique au moteur de reconnaissance de la part de Google.