Я все еще борюсь с моими ттс. В моем эмуляторе все работает хорошо, но так как мой телефон шведский, мне нужно проверить 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.");
}
}