小编use*_*013的帖子

三星Galaxy S3上的TTS问题

我正在开发一个使用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(三星和谷歌),所以我得到一个对话框,要求选择一个.

选择TTS

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

所以,我有3个问题/问题:

  1. 有没有办法强制编程使用三星TTS而不问?

  2. 我的设备来自西班牙,但是如果我将语言更改为英语,则我的Google TTS语言列表中没有此语言,我找不到添加它的方法(参见屏幕截图#2).

  3. 如果我将语言更改为西班牙语,则该语言应该安装在我的设备中(参见屏幕截图#2),但由于某些原因,TTS resultCode是 …

android text-to-speech samsung-mobile

6
推荐指数
1
解决办法
7456
查看次数

Mac命令中的Java命令Runtime.getRuntime().exec()

我使用的是Mac OS Lion,java版本为1.6.0_26

我正在为Java制作一个小型应用程序,并为用户提供主菜单,因此他可以选择多个选项.

其中之一是使用.pkg安装应用程序

使用这些命令一切正常:

File instFolder = new File(System.getProperty("user.dir") + "/foldername/appInstaller.pkg");
String s = "open "+ instFolder.toString();
Process p = Runtime.getRuntime().exec(s);
Run Code Online (Sandbox Code Playgroud)

然后我意识到当foldername有空格或者我把这个带有所需子文件夹的java文件复制到名为"NO NAME"的USB笔式驱动器(或带空格的某个名称)时会出现问题.

因为s将变成类似:

open/Volumes/NO NAME/foldername/appInstaller.pkg

open/Users/user1/Desktop/folder name/appInstaller.pkg



所以当你运行p进程时,命令将在第一个空格处完成出现在路径

open/Volumes/NO

open/Users/user1/Desktop /文件夹中


为了解决这个问题,我改变了s定义,如下所示:

String s = "open "+ "\"" + instFolder.toString() + "\"";
Run Code Online (Sandbox Code Playgroud)

它停止了正常工作.奇怪的是,如果我复制s值(在创建s变量之后)并将其粘贴到终端中它可以工作:

打开"/ Users/user1/Desktop/folder name/appInstaller.pkg"


但是从Java运行它确实不行.

请问你能帮帮我吗?

谢谢.

java macos runtime.exec

4
推荐指数
1
解决办法
1万
查看次数