Android TextToSpeech.LANG_AVAILABLE - PullRequest
       7

Android TextToSpeech.LANG_AVAILABLE

0 голосов
/ 04 декабря 2010

Я все еще борюсь с моими ттс. В моем эмуляторе все работает хорошо, но так как мой телефон шведский, мне нужно проверить Locale.US (мои тексты на английском) и установить его. И .. это то, что я думал, что сделал, но Locale недоступен и возвращает -1? Я делаю что-то не так, я думал, что английский язык всегда был доступен?

   public void onInit(int status) {
    // status can be either TextToSpeech.SUCCESS or TextToSpeech.ERROR.
    if (status == TextToSpeech.SUCCESS) {
        // Set preferred language to US english.
        // Note that a language may not be available, and the result will indicate this.
        int result = mtts.setLanguage(Locale.US);

        if (result == TextToSpeech.LANG_MISSING_DATA ||
            result == TextToSpeech.LANG_NOT_SUPPORTED) {
           // Lanuage data is missing or the language is not supported.
            Log.e(TAG, "Language is not available.");
           //install it?

            result = mtts.isLanguageAvailable(Locale.US);
            if (result == TextToSpeech.LANG_AVAILABLE) {
            AlertDialog.Builder builder = new AlertDialog.Builder(this);
            builder.setMessage("Language missing, install English speech?")
                   .setCancelable(false)
                   .setPositiveButton("Yes", new DialogInterface.OnClickListener() {
                       public void onClick(DialogInterface dialog, int id) {

                           //installera
                           Intent installIntent = new Intent();
                           installIntent.setAction(
                               TextToSpeech.Engine.ACTION_INSTALL_TTS_DATA);
                           startActivity(installIntent);


                       }
                   })
                   .setNegativeButton("No", new DialogInterface.OnClickListener() {
                       public void onClick(DialogInterface dialog, int id) {
                            dialog.cancel();
                       }
                   });
            AlertDialog alert = builder.create();
            } 
           //not installable
            Log.e(TAG, "Language not installable");

        } else {

            // The TTS engine has been successfully initialized.
            speak();
        }
    } else {
        // Initialization failed.
        Log.e(TAG, "Could not initialize TextToSpeech.");
    }
}

Ответы [ 2 ]

0 голосов
/ 11 июня 2018

у вас была небольшая ошибка.вместо:

if (result == TextToSpeech.LANG_AVAILABLE) 

вы должны иметь:

if (result != TextToSpeech.LANG_AVAILABLE) 

, тогда в диалоговом окне отобразится

0 голосов
/ 04 декабря 2010

Кажется, работает .. если телефон не подключен к компьютеру.Я понятия не имел об этом, но когда я отключился, я снова запустил свое приложение, и оно загрузило языковой пакет и установило его, и теперь оно свободно говорит по-английски ..

...