在我的应用程序中,我正在使用 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);