在我的应用程序中,我使用SpeechRecognizer来检测用户所说的内容。我的设备语言设置为英语,当我说英语时它运行良好,但是当我用其他语言(例如希伯来语)说一些东西时,它不会一直运行,因为它适用于英语,直到我设置设备的语言为希伯来语,然后就可以正常工作了。我试图避免设置设备的语言并希望它自动检测用户语言。我注意到即使设备的语言设置为英语,“OK Google”也能正常工作并检测到正确的希伯来语单词。
同时,我试图做的是当用户第一次进入我的应用程序时,我要求他进入他的国家。然后当我有他的国家 -> 我得到国家代码,然后我使用国家代码创建一个区域设置。然后将此语言环境作为语言发送到语音识别器。但它没有帮助..
// example of how to get the locale using the country code
Locale myLocale = null;
String toSearch = "IL";
toSearch = toSearch.trim().toLowerCase();
for (Locale locale : Locale.getAvailableLocales())
{
if(locale.getCountry().trim().toLowerCase().contains(toSearch))
{
myLocale = locale;
break;
}
}
// example of how I'm sending the locale
Intent recIntent= new Intent(RecognizerIntent.ACTION_RECOGNIZE_SPEECH);
recIntent.putExtra(RecognizerIntent.ExtraLanguage,myLocale);