我在我的应用程序中使用文本到语音转换。安装语音数据包后,它工作正常。但是,当没有安装语音数据并且我调用以下方法时,不会播放音频:
_textToSpeech.speak( text, TextToSpeech.QUEUE_ADD, null );
因此,我想检查是否安装了软件包以向用户发出通知,但我找不到执行此操作的方法。类"TextToSpeech"提供了一个方法"isLanguageAvailable()"。但是,如果安装或未安装语音数据,则该方法的结果始终相同。
_textToSpeech.isLanguageAvailable(Locale.GERMANY) // result is 1 (LANG_COUNTRY_AVAILABLE)
_textToSpeech.isLanguageAvailable(Locale.GERMAN) // result is 0 (LANG_AVAILABLE)
在我的安卓设置中,首选的TTS引擎是"谷歌文本到语音"。
有没有人知道如何检查是否安装了TTS语音数据?
谢谢。。
这是我用来检查语音数据是否可用的方法。
private val ttsCheckCode = 1000
// Check by launching intent whether TTS is available or not
val checkIntent = Intent()
checkIntent.action = TextToSpeech.Engine.ACTION_CHECK_TTS_DATA
startActivityForResult(checkIntent, ttsCheckCode)
这将检查语音数据是否可用。 查看 android.speech.tts.TextToSpeech 中的文档以获得更清晰的信息。上面的代码要么给我CHECK_VOICE_DATA_PASS,要么给我CHECK_VOICE_DATA_FAIL。一旦我收到结果CHECK_VOICE_DATA_PASS,我就可以在onActivityResult()中进行初始化等操作。
override fun onActivityResult(requestCode: Int, resultCode: Int, data: Intent?) {
super.onActivityResult(requestCode, resultCode, data)
if (requestCode == ttsCheckCode) {
if (resultCode == TextToSpeech.Engine.CHECK_VOICE_DATA_PASS) {
// success, create the TTS instance and do other things
}
}
}
希望这有帮助。