use*_*013 6 android text-to-speech samsung-mobile
我正在开发一个使用TTS的Android应用程序.我创建了一个启动画面,我检查是否安装了TTS引擎,如果没有安装,它会转到Google Play下载.
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
...
Intent checkIntent = new Intent();
checkIntent.setAction(TextToSpeech.Engine.ACTION_CHECK_TTS_DATA);
startActivityForResult(checkIntent, MY_DATA_CHECK_CODE);
...
}
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
...
if (requestCode == PersonalTextToSpeech.MY_DATA_CHECK_CODE)
{
if (resultCode == TextToSpeech.Engine.CHECK_VOICE_DATA_PASS)
{
mTts = new TextToSpeech(context, this);
} else
{
Intent installIntent = new Intent();
installIntent.setAction(TextToSpeech.Engine.ACTION_INSTALL_TTS_DATA);
context.startActivity(installIntent);
}
}
}
Run Code Online (Sandbox Code Playgroud)
它在2.2和2.3.x操作系统的三星设备上运行良好.如果需要,它会转到谷歌播放,但现在我尝试使用三星Galaxy S3(4.1.1),默认安装了2个TTS(三星和谷歌),所以我得到一个对话框,要求选择一个.

如果用户选择三星它完美,但如果用户选择谷歌,它会转到设置 - >语言和输入 - >文字转语音输出 - >谷歌文字转语音引擎 - >设置 - - >安装语音数据,我得到这个:

所以,我有3个问题/问题:
resultCode是LANG_NOT_SUPPORTED (-2).事实上,就在我写这篇文章时,我发现了一些奇怪的东西.
如果您选择三星TTS,它将"工作"(resultCode= CHECK_VOICE_DATA_PASS (1)),但"声音"将根据您的设置而改变(查看屏幕截图#3):

如果您选择三星,它将根据您选择的内容使用Samsung TTS或Google TTS:设置 - >语言和输入 - >文本到语音输出.
因此,即使您选择三星TTS,您也可以使用Google TTS,但如果您直接选择Google TTS(请参见屏幕截图#1),它将失败.
有人可以解释一下我做错了什么吗?
谢谢你的帮助.
小智 -1
我也陷入了这个问题,我通过替换 onActivityResult 中的代码解决了它。我没有检查 TTS 数据,而是检查了可用的语音。
if (availableLanguages.isEmpty()) {
// no language data available, prompt for install
Intent installIntent = new Intent();
installIntent
.setAction(TextToSpeech.Engine.ACTION_INSTALL_TTS_DATA);
startActivity(installIntent);
} else {
// some language data is available, create TTS instance
myTTS = new TextToSpeech(this, this);
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
7456 次 |
| 最近记录: |