首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >三星Galaxy S3的TTS问题

三星Galaxy S3的TTS问题
EN

Stack Overflow用户
提问于 2012-11-08 09:33:38
回答 1查看 8K关注 0票数 7

我正在为android开发一个使用TTS的应用程序。我创建了一个启动屏幕,检查是否安装了TTS引擎,如果没有安装,它将转到Google下载。

代码语言:javascript
复制
@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);
        }
    }
}

它在使用2.2和2.3.x操作系统的三星设备上运行良好。如果需要的话,它会转到Google,但现在我已经尝试了三星Galaxy S3 ( 4.1.1),它默认安装了两个TTS (三星和谷歌),所以我得到了一个对话框,要求选择一个。

如果用户选择三星,它工作得很好,但是如果用户选择Google,它会转到设置->语言和输入->文本到语音输出-> Google文本到语音引擎-->设置->安装语音数据--我得到了以下信息:

所以,我有三个问题:

  1. 有没有办法不经询问就强行使用三星TTS?

  1. 我的设备是从西班牙来的,但是如果我把语言改成英语,我的TTS语言的Google列表中就没有这个语言了,我也找不到添加它的方法(见屏幕截图#2)。

  1. 如果我将语言改为西班牙语,这种语言应该安装在我的设备中(参见屏幕截图#2),但出于某种原因,TTS resultCodeLANG_NOT_SUPPORTED (-2)

事实上,现在我写这篇文章的时候,我发现了一些奇怪的东西。

如果您选择三星TTS,它将“工作”(resultCode = CHECK_VOICE_DATA_PASS (1)),但“声音声音”将根据设置的方式而改变(查看屏幕快照#3):

如果您选择三星,它将使用三星TTS或谷歌TTS,根据您所选择的内容:设置->语言和输入->文本到语音输出。

因此,即使您选择三星TTS,您也可以使用Google,但是如果您直接选择Google (参见Screen快照#1),它将失败。

有人能解释我做错了什么吗?

谢谢你的帮助。

EN

回答 1

Stack Overflow用户

发布于 2013-08-26 07:39:24

我也遇到了这个问题,我只是替换了我的onActivityResult中的一个代码来解决这个问题。我不是检查TTS数据,而是检查是否有可用的声音。

代码语言:javascript
复制
             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);
            }
票数 -1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/13286227

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档