Detect installed languages for offline recognition(检测已安装的语言以进行脱机识别)
本文介绍了检测已安装的语言以进行脱机识别的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
可以通过代码确定设备上当前安装了哪些语言包?已尝试: Intent detailsIntent = new Intent(RecognizerIntent.ACTION_GET_LANGUAGE_DETAILS);
sendOrderedBroadcast(detailsIntent, null, new LanguageDetailsChecker(), null, Activity.RESULT_OK, null, null);
public class LanguageDetailsChecker extends BroadcastReceiver {
private List<String> supportedLanguages;
@Override
public void onReceive(Context context, Intent intent)
{
Bundle results = getResultExtras(true);
if (results.containsKey(RecognizerIntent.EXTRA_SUPPORTED_LANGUAGES))
{
supportedLanguages =results.getStringArrayList(RecognizerIntent.EXTRA_SUPPORTED_LANGUAGES);
Log.d("TAG","languages: " + supportedLanguages);
}
}
}
但是,输出显示了大量的语言,而我只安装了en_UK、en_US和es_es。有什么想法吗?
推荐答案
如果您有超级用户(抱歉),您可以这样做:
public static boolean isOfflineDictionaryPresent(String language) {
if (locale == null) locale = Locale.US;
String dir = "/system/usr/srec/config/" +
language.replace('_', '.').toLowerCase();
if ((new File(dir)).isDirectory()) return true;
return false;
}
这是从Android 4.2.2Recognizer.java source改编的:
- 返回简单布尔值,而不是字典目录
- 接受字符串输入(例如"en_US")而不是区域设置
我会像您一样获得完整的列表,并遍历它们以检查哪些列表可以脱机使用。我已经检查了两台设备上的/system/usr/srec/config/
文件夹,它们都与我安装的词典匹配。
编辑:出于好奇,如果处于脱机状态,Extra_Support_Languages包含什么内容?如果它正确返回,您可能只需伪造网络管理器。
这篇关于检测已安装的语言以进行脱机识别的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持编程学习网!
沃梦达教程
本文标题为:检测已安装的语言以进行脱机识别
基础教程推荐
猜你喜欢
- 在 gmail 中为 ios 应用程序检索朋友的朋友 2022-01-01
- 如何让对象对 Cocos2D 中的触摸做出反应? 2022-01-01
- Android:对话框关闭而不调用关闭 2022-01-01
- UIWebView 委托方法 shouldStartLoadWithRequest:在 WKWebView 中等效? 2022-01-01
- 如何在 iPhone 上显示来自 API 的 HTML 文本? 2022-01-01
- 如何在 UIImageView 中异步加载图像? 2022-01-01
- Kivy Buildozer 无法构建 apk,命令失败:./distribute.sh -m “kivy"d 2022-01-01
- 如何在没有IB的情况下将2个按钮添加到右侧的UINavigationbar? 2022-01-01
- android 应用程序已发布,但在 google play 中找不到 2022-01-01
- 当从同一个组件调用时,两个 IBAction 触发的顺序是什么? 2022-01-01