TTS - CHECK_VOICE_DATA_FAIL - Verifique o mecanismo disponível
Eu estou tendo um problema estranho com o motor TTS e eu não consigo descobrir por que / onde está o meu erro. É pesquisado por horas para uma solução, mas sem nenhum resultado que possa ser mencionado.
Quando estou usando issoCódigo de demonstração da API tudo está funcionando bem e eu posso ouvir por todos os idiomas instalados a voz.
Mas quando eu estou verificando poreste método Estou recebendo CHECK_VOICE_DATA_FAIL como um código de retorno para motores TTS personalizados (que eu preciso para todos os idiomas necessários, o google padrão não é suficiente).
O que estou perdendo aqui? Como posso verificar a disponibilidade dos motores TTS? Eu sei que isso não é necessariamente um problema de código, mas, para outros programas, isso parece estar funcionando.
Eu instalei alguns outros aplicativos doSite SVox e estes parecem funcionar em todos os meus dispositivos, enquanto o código abaixo falha.
Como um exemplo,TalkToMeClassic está verificando a disponibilidade do motor e está funcionando.
O que é feito diferente aqui?
Aqui está o meu código de extrato (que é uma cópia do artigo):
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
Intent checkIntent = new Intent();
checkIntent.setAction(TextToSpeech.Engine.ACTION_CHECK_TTS_DATA);
startActivityForResult(checkIntent, 0x99);
}
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
if (requestCode == 0x99) {
if (resultCode == TextToSpeech.Engine.CHECK_VOICE_DATA_PASS) {
// success, create the TTS instance
mTts = new TextToSpeech(this, this);
} else {
Log.e("TTS","Missing Data:" + resultCode );
// missing data, install it
Intent installIntent = new Intent();
installIntent.setAction(
TextToSpeech.Engine.ACTION_INSTALL_TTS_DATA);
startActivity(installIntent);
}
}
}