在大多数 Android 设备中,RecognitionService将由 Google 的原生“Now/Assistant”应用程序提供。
在 Android Oreo 之前,我可以使用以下简单代码查询 Google 识别器支持的语言:
final Intent vrIntent = new Intent(RecognizerIntent.ACTION_GET_LANGUAGE_DETAILS);
// vrIntent.setPackage("com.google.android.googlequicksearchbox");
getContext().sendOrderedBroadcast(vrIntent, null, new BroadcastReceiver() {
@Override
public void onReceive(final Context context, final Intent intent) {
// final Bundle bundle = intent.getExtras();
final Bundle bundle = getResultExtras(true);
if (bundle != null) {
if (bundle.containsKey(RecognizerIntent.EXTRA_SUPPORTED_LANGUAGES)) {
Log.i("TAG", "onReceive: EXTRA_SUPPORTED_LANGUAGES present");
final ArrayList<String> vrStringLocales = bundle.getStringArrayList(
RecognizerIntent.EXTRA_SUPPORTED_LANGUAGES);
Log.i("TAG", "onReceive: EXTRA_SUPPORTED_LANGUAGES size: " + vrStringLocales.size());
} else {
Log.w("TAG", "onReceive: missing EXTRA_SUPPORTED_LANGUAGES");
}
} else {
Log.w("TAG", "onReceive: Bundle null");
}
}, null, 1234, null, null);
但是,由于 8.0+RecognizerIntent.EXTRA_SUPPORTED_LANGUAGES
不再包含在响应中。
在我尝试将此作为错误提交之前,我想首先看看其他人是否可以复制 - 但还要检查 API 26 中是否存在我以某种方式忽略的有序广播行为更改,这可能是造成这种情况的原因。
提前致谢。