android 自动语音,在Android上自动下载离线语音识别语言
这不是你所希望的答案,在写作的时候,我不相信有一个直接的解决方案.我非常希望被证明是错误的.我要求加强在很久以前 – here以编程方式提供这个信息增强建议附加参数RecognizerIntent.EXTRA_SUPPORTED_OFFLINE_LANGUAGES:以下方式添加和使用它肯定是微不足道的:final Intent vrIntent = new Intent(RecognizerInt
这不是你所希望的答案,在写作的时候,我不相信有一个直接的解决方案.我非常希望被证明是错误的.
我要求加强在很久以前 – here以编程方式提供这个信息
增强建议附加参数RecognizerIntent.EXTRA_SUPPORTED_OFFLINE_LANGUAGES:
以下方式添加和使用它肯定是微不足道的:
final Intent vrIntent = new Intent(RecognizerIntent.ACTION_GET_LANGUAGE_DETAILS);
getContext().sendOrderedBroadcast(vrIntent, null, new BroadcastReceiver() {
@Override
public void onReceive(final Context context, final Intent intent) {
final ArrayList vrStringLocales = intent.getExtras().getStringArrayList(
RecognizerIntent.EXTRA_SUPPORTED_LANGUAGES);
// This would be nice
final ArrayList vrStringOfflineLocales = intent.getExtras().getStringArrayList(
RecognizerIntent.EXTRA_SUPPORTED_OFFLINE_LANGUAGES);
}
}, null, 1234, null, null);
唉,从来没有发生过.
您还有其他两个选项可以尝试以优雅的方式处理.
在不太可能的情况下,您的应用程序以root权限运行,您可以检查/data/data/com.google.android.googlequicksearchbox/app_g3_models/的位置,其中包含脱机文件,并以其本地语言轻松标记.
第二个是知道用户什么时候需要提示安装缺少的脱机文件.
从我的经验来看,SpeechRecognizer.ERROR_SERVER的识别错误大多数表示这一点,但并不是万无一失的.
@Override
public void onError(final int error) {
switch (error) {
case SpeechRecognizer.ERROR_SERVER:
// TODO - prompt to install offline files
break;
}
}
检测到时,您可以引导用户进入正确的安装屏幕.
public static final String PACKAGE_NAME_GOOGLE_NOW = "com.google.android.googlequicksearchbox";
public static final String ACTIVITY_INSTALL_OFFLINE_FILES = "com.google.android.voicesearch.greco3.languagepack.InstallActivity";
public static boolean showInstallOfflineVoiceFiles(@NonNull final Context ctx) {
final Intent intent = new Intent();
intent.setComponent(new ComponentName(PACKAGE_NAME_GOOGLE_NOW, ACTIVITY_INSTALL_OFFLINE_FILES));
intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_CLEAR_TOP);
try {
ctx.startActivity(intent);
return true;
} catch (final ActivityNotFoundException e) {
} catch (final Exception e) {
}
return false;
}
使用诸如此类的硬编码值当然不是理想的,但也不是这种情况!
一旦你搞砸了上面所有的一切,并认为你有一个很好的临时解决方案 – 再想一想!无论用户是否正确安装了丢失的脱机文件,很有可能仍然无法正常工作
我的answer here描述了我仍然要指导我的用户的过程.这很令人沮丧.
最后还有一个错误可以抛出混合 – RecognitionListener.onError(int)可以抛出,当没有错误.检查我的gist from the answer here使用BugRecognitionListener,以便您可以检查正确发送的回调顺序,并忽略那些不是.这仍然是一个问题,尽管我的答案建议在以前的版本中修复.
以上应该让你忙!祝你好运….
更多推荐
所有评论(0)