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包含什么内容?如果它正确返回,您可能只需伪造网络管理器。
这篇关于检测已安装的语言以进行脱机识别的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持编程学习网!
沃梦达教程
本文标题为:检测已安装的语言以进行脱机识别
猜你喜欢
- Android - 拆分 Drawable 2022-01-01
- 使用自定义动画时在 iOS9 上忽略 edgesForExtendedLayout 2022-01-01
- 如何检查发送到 Android 应用程序的 Firebase 消息的传递状态? 2022-01-01
- Android viewpager检测滑动超出范围 2022-01-01
- 在测试浓缩咖啡时,Android设备不会在屏幕上启动活动 2022-01-01
- 想使用ViewPager,无法识别android.support.*? 2022-01-01
- android 4中的android RadioButton问题 2022-01-01
- 用 Swift 实现 UITextFieldDelegate 2022-01-01
- Android - 我如何找出用户有多少未读电子邮件? 2022-01-01
- MalformedJsonException:在第1行第1列路径中使用JsonReader.setLenient(True)接受格式错误的JSON 2022-01-01