我使用以下代码来检测我的设备上是否安装了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(CHECK_VOICE_DATA_FAIL )。
请告知我如何通过此检查。以及如何从TTS设置页面返回到我的应用活动? (目前如果我禁止结果代码检查,我可以从我的应用程序转到TTS设置页面,但我无法检测返回阶段回到我的应用程序的活动)