Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/neo4j/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 尽管设备上安装了有效的TTS引擎,但TTS引擎安装检查未返回成功代码_Android_Text To Speech_Google Text To Speech - Fatal编程技术网

Android 尽管设备上安装了有效的TTS引擎,但TTS引擎安装检查未返回成功代码

Android 尽管设备上安装了有效的TTS引擎,但TTS引擎安装检查未返回成功代码,android,text-to-speech,google-text-to-speech,Android,Text To Speech,Google Text To Speech,我正在使用以下代码检测我的设备上是否安装了TTS引擎 要启动TTS引擎列表页面,请执行以下操作: //Open Android Text-To-Speech Settings startActivityForResult(Build.VERSION.SDK_INT >= 14 ? new Intent().setAction("com.android.settings.TTS_SETTINGS").setFla

我正在使用以下代码检测我的设备上是否安装了TTS引擎

要启动TTS引擎列表页面,请执行以下操作:

//Open Android Text-To-Speech Settings
            startActivityForResult(Build.VERSION.SDK_INT >= 14 ?
                            new Intent().setAction("com.android.settings.TTS_SETTINGS").setFlags(Intent.FLAG_ACTIVITY_NEW_TASK) :
                            new Intent().addCategory(Intent.CATEGORY_LAUNCHER).setComponent(new ComponentName("com.android.settings", "com.android.settings.TextToSpeechSettings")).setFlags(Intent.FLAG_ACTIVITY_NEW_TASK)
                    ,ConstantParams.VOICE_TTS_CHECK_CODE);
返回到我的应用程序的活动时:

 @Override
public void onActivityResult(int requestCode, int resultCode, Intent data) {
    // TODO Auto-generated method stub
    super.onActivityResult(requestCode, resultCode, data);
    if(requestCode == ConstantParams.VOICE_TTS_CHECK_CODE)
    {
        Log.d("TTS","Result code : "+resultCode);
        if(resultCode != TextToSpeech.Engine.CHECK_VOICE_DATA_PASS){
            Log.d("TTSService","Valid TTS not installed");
            Intent install = new Intent();
           install.setAction(TextToSpeech.Engine.ACTION_INSTALL_TTS_DATA);
            startActivity(install);
        }
        else
        {               
            //Do something
        }
    }
}
但是,尽管我的设备安装了多个TTS引擎(我可以手动转到该设置页面,更改TTS引擎并验证语音中的更改),但此代码始终返回值为0的resultCode(检查语音数据失败)


请告诉我如何通过这张支票。从TTS设置页面返回到我的应用程序活动时,如何获取事件?(当前,如果我取消结果代码检查,我可以从我的应用程序转到TTS设置页面,但我无法检测返回到我的应用程序活动的返回阶段)

这不是正确的意图-请参见此处,它不会重定向到您使用的TTS屏幕,我修改了我的设置,删除了setflag调用,并且我能够重定向到TTS屏幕。但是,当我从该屏幕返回时,我仍然会收到CHECK_VOICE_DATA_FAIL result代码。如果您运行链接的测试代码,并且列表为空,您将知道没有安装引擎,然后您可以将用户重定向到Play Store。若要检查是否有其他错误,请使用此意图您正在使用的一个不提供回调。您现在提供的第二个链接允许我仅在第一次尝试访问可用的TTS引擎时,在可用的TTS引擎之间进行选择。第二次(或任何进一步的尝试),它直接检测CHECK_VOICE_DATA_PASS事件,不允许我选择。是否有一些“标志”,我可以重置,以便选择可用的TTS引擎之间的选项出现在每次我试图访问它?另外,在第二个链接的代码中,您使用了“protected”而不是“public”,所以我的IDE在抱怨。是故意使用“受保护”而不是“公共”吗?您是否意外选择了“始终选择此选项”-如果是,您可以从所选应用程序的设置“清除默认值”中清除它。受保护vs私有vs公共取决于您打算在其中使用它的范围