swi*_*ter 5 android text-to-speech
我TextToSpeech
完全按照这篇博文中提到的那样实现了集成.在我将它添加到我的程序后,它现在正在干扰我的其他程序intent
.
例如:
ACTION_CHECK_TTS_DATA
意图我什么时候需要这个TTS检查?我可以在应用程序启动时执行一次吗?这导致我的应用程序加载缓慢.如果可能的话,我希望在单独的线程中执行此加载.
做一次检查.安装数据后,用户不太可能再次执行此操作.一旦安装了数据,用户就无法删除它,即使他们想要这样做.
另外,不要使用ACTION_CHECK_TTS_DATA Intent,这很难使用.
相反,请执行以下操作:
这是一些以我建议的方式初始化TextToSpeech的代码.作为奖励,它也设置了语言.
public class DemoCreateTTS
{
private static final String TAG = "DemoCreateTTS";
private TextToSpeech tts;
public void createTextToSpeech(final Context context,
final Locale locale)
{
tts = new TextToSpeech(context, new OnInitListener()
{
@Override
public void onInit(int status)
{
if (status == TextToSpeech.SUCCESS)
{
Locale defaultOrPassedIn = locale;
if (locale == null)
{
defaultOrPassedIn = Locale.getDefault();
}
// check if language is available
switch (tts.isLanguageAvailable(defaultOrPassedIn))
{
case TextToSpeech.LANG_AVAILABLE:
case TextToSpeech.LANG_COUNTRY_AVAILABLE:
case TextToSpeech.LANG_COUNTRY_VAR_AVAILABLE:
Log.d(TAG, "SUPPORTED");
tts.setLanguage(locale);
//pass the tts back to the main
//activity for use
break;
case TextToSpeech.LANG_MISSING_DATA:
Log.d(TAG, "MISSING_DATA");
Log.d(TAG, "require data...");
Intent installIntent = new Intent();
installIntent.setAction(TextToSpeech.Engine.ACTION_INSTALL_TTS_DATA);
context.startActivity(installIntent);
break;
case TextToSpeech.LANG_NOT_SUPPORTED:
Log.d(TAG, "NOT SUPPORTED");
break;
}
}
}
});
}
}
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
1597 次 |
最近记录: |