Не может говорить на языках, кроме английского

В моем приложении TTS для Android я пытался говорить по-японски. Итак, я установил язык на японский.

result = tts.setLanguage(Locale.JAPAN);
finalText = textField.getText().toString();
tts.speak(finalText , TextToSpeech.QUEUE_ADD, null);

Это не сработало. Поэтому я установил

result = tts.setLanguage(Locale.JAPANESE);
finalText = textField.getText().toString();
tts.speak(finalText , TextToSpeech.QUEUE_ADD, null);

Это тоже не сработало.

Чудесный случай, любой другой язык, кроме английского, не работает!!!!!!!!!!!!!!!

Это текст, который я пытался говорить

私は英雄です。だから問題は何ですか?

Итак, мой вопрос: что здесь происходит? Разве он не может говорить на других языках?

ОБНОВЛЕНИЕ

Это начало работать, как только я установил язык в onInit() . Ранее я пытался установить по запросу пользователя, что означает, что onInit() не вызывается, когда пользователь вручную меняет язык с американского на японский. Итак, как я могу вызвать OnInit() вручную, не перезапуская активность?


person JustCause    schedule 11.11.2013    source источник


Ответы (2)


Напишите код как в onCreate()

 String Text = text.getText().toString();
            tts.speak(Text, TextToSpeech.QUEUE_ADD, null);
Intent checkIntent = new Intent();
        checkIntent.setAction(TextToSpeech.Engine.ACTION_CHECK_TTS_DATA);
        startActivityForResult(checkIntent, MY_DATA_CHECK_CODE);

тогда

public void onInit(int status) {
        // TODO Auto-generated method stub
        if(status== TextToSpeech.SUCCESS){
            int result= tts.setLanguage(Locale.US);
            if(result==TextToSpeech.LANG_MISSING_DATA||result== TextToSpeech.LANG_NOT_SUPPORTED){
                Log.e("TTS", "This Language is not Supported");
            }else{
                talk.setEnabled(true);
            speakOut();
            }
        }
        else{
            Log.e("TTS", "Initialization Falied");
        }

    }
    protected void onActivityResult(int requestCode, int resultCode, Intent data) {
                    if (requestCode == MY_DATA_CHECK_CODE) {
                        if (resultCode == TextToSpeech.Engine.CHECK_VOICE_DATA_PASS) {
                            // success, create the TTS instance
                            tts = new TextToSpeech(this, this);
                        }
                        else {
                            // missing data, install it
                            Intent installIntent = new Intent();
                            installIntent.setAction(TextToSpeech.Engine.ACTION_INSTALL_TTS_DATA);
                            startActivity(installIntent);
                        }
                    }

                }

это даст вам возможность выбрать голосовой сервис, где вы можете скачать японский язык

person Android Noob    schedule 11.11.2013
comment
Привет, кто звонит onActivityResult? - person JustCause; 12.11.2013
comment
Пожалуйста, проверьте обновленный ответ. Я пропустил эти строки при форматировании... извините - person Android Noob; 12.11.2013

Проверьте возвращаемое значение; http://developer.android.com/reference/android/speech/tts/TextToSpeech.html#setLanguage(java.util.Locale)

Похоже, что если локаль, которую вы пытаетесь установить, недоступна (на вашем телефоне), она установит ближайшую доступную локаль, которая в вашем случае может быть только английской.

person Pontus Backlund    schedule 11.11.2013