Android:检查是否安装了TTS语音数据包

问题描述 投票:2回答:1

我正在我的应用程序中使用文本到语音转换。安装语音数据包后,它可以正常工作。但是,当没有安装语音数据并且调用以下方法时,则不会播放音频:

_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)

在我的android设置中,首选的TTS引擎是'Google Text-to-speech'。

有人知道如何检查是否安装了TTS语音数据吗?

谢谢..

android text-to-speech
1个回答
0
投票

这里是我用来检查语音数据是否可用的方法。

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
        }
    }
}

希望这会有所帮助。

© www.soinside.com 2019 - 2024. All rights reserved.