Jes*_*usS 12 android speech-recognition
可以通过代码确定设备上当前安装了哪些语言包?试过这个:
Intent detailsIntent = new Intent(RecognizerIntent.ACTION_GET_LANGUAGE_DETAILS);
sendOrderedBroadcast(detailsIntent, null, new LanguageDetailsChecker(), null, Activity.RESULT_OK, null, null);
Run Code Online (Sandbox Code Playgroud)
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);
}
}
}
Run Code Online (Sandbox Code Playgroud)
但是,输出显示了大量语言,而我只安装了en_UK,en_US和es_ES.任何的想法?
如果你有root权限(抱歉),你可以这样做:
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;
}
Run Code Online (Sandbox Code Playgroud)
这是从 Android 4.2.2 Recognizer.java 源代码中删除并修改的:
我会像您一样获取完整列表,然后循环浏览它们以检查哪些可以离线使用。我检查了/system/usr/srec/config/两台设备上的文件夹,它们都与我安装的词典匹配。
当然,缺点是它只适用于 root,所以我不确定这最终对你有多大帮助。我真的不知道该说什么非root,我找不到任何东西。
编辑:出于好奇,如果您处于离线状态,EXTRA_SUPPORTED_LANGUAGES 包含什么?如果它正确返回,您可能只需要伪造网络管理器即可。
| 归档时间: |
|
| 查看次数: |
2178 次 |
| 最近记录: |