Android 上的语音识别支持语言
Speech recognition supported languages on Android
我在获取支持的语言时遇到问题。我看到了一个解决方案
那就是创建一个广播接收器并用语言填充列表。
public class LanguageChecker extends BroadcastReceiver
{
private List<String> supportedLanguages;
private String languagePreference;
@Override
public void onReceive(Context context, Intent intent)
{
//Log.d(Constants.Tag,"OnReceive");
Bundle results = getResultExtras(true);
if (results.containsKey(RecognizerIntent.EXTRA_LANGUAGE_PREFERENCE))
{
languagePreference =
results.getString(RecognizerIntent.EXTRA_LANGUAGE_PREFERENCE);
}
if (results.containsKey(RecognizerIntent.EXTRA_SUPPORTED_LANGUAGES))
{
supportedLanguages =
results.getStringArrayList(
RecognizerIntent.EXTRA_SUPPORTED_LANGUAGES);
}
}
public List<String> getSupportedLanguages() {
return supportedLanguages;
}
}
但问题是我需要这个 supportedLanguages 列表来填充我的微调器。
当我调用方法 getSupportedLanguages 时,我得到 null。
这就是我在 onCreate 中使用广播的方式:
try {
lang = new LanguageChecker();
Intent detailsIntent = new Intent(RecognizerIntent.ACTION_GET_LANGUAGE_DETAILS);
sendOrderedBroadcast(detailsIntent, null, lang, null, Activity.RESULT_OK, null, null);
supportedLanguagesForSpeech=lang.getSupportedLanguages();
Log.d(Constants.Tag, String.valueOf(supportedLanguagesForSpeech.size()));
}
catch (Exception e){
Log.d(Constants.Tag,e.getMessage());
}
您应该通过回调来解决它,以确保 supportedLanguages
已分配。你得到 null
因为你没有等待 onReceive
被调用。
这是我当前查询所有可用语音识别服务的支持语言的解决方案:
您可以在 "Settings -> Recognition languages & services" 列表中的 Kõnele 应用程序 (http://kaljurand.github.io/K6nele/about/) 中看到它的运行情况。
我在获取支持的语言时遇到问题。我看到了一个解决方案 那就是创建一个广播接收器并用语言填充列表。
public class LanguageChecker extends BroadcastReceiver
{
private List<String> supportedLanguages;
private String languagePreference;
@Override
public void onReceive(Context context, Intent intent)
{
//Log.d(Constants.Tag,"OnReceive");
Bundle results = getResultExtras(true);
if (results.containsKey(RecognizerIntent.EXTRA_LANGUAGE_PREFERENCE))
{
languagePreference =
results.getString(RecognizerIntent.EXTRA_LANGUAGE_PREFERENCE);
}
if (results.containsKey(RecognizerIntent.EXTRA_SUPPORTED_LANGUAGES))
{
supportedLanguages =
results.getStringArrayList(
RecognizerIntent.EXTRA_SUPPORTED_LANGUAGES);
}
}
public List<String> getSupportedLanguages() {
return supportedLanguages;
}
}
但问题是我需要这个 supportedLanguages 列表来填充我的微调器。 当我调用方法 getSupportedLanguages 时,我得到 null。
这就是我在 onCreate 中使用广播的方式:
try {
lang = new LanguageChecker();
Intent detailsIntent = new Intent(RecognizerIntent.ACTION_GET_LANGUAGE_DETAILS);
sendOrderedBroadcast(detailsIntent, null, lang, null, Activity.RESULT_OK, null, null);
supportedLanguagesForSpeech=lang.getSupportedLanguages();
Log.d(Constants.Tag, String.valueOf(supportedLanguagesForSpeech.size()));
}
catch (Exception e){
Log.d(Constants.Tag,e.getMessage());
}
您应该通过回调来解决它,以确保 supportedLanguages
已分配。你得到 null
因为你没有等待 onReceive
被调用。
这是我当前查询所有可用语音识别服务的支持语言的解决方案:
您可以在 "Settings -> Recognition languages & services" 列表中的 Kõnele 应用程序 (http://kaljurand.github.io/K6nele/about/) 中看到它的运行情况。