У меня есть код распознавания голоса, который вылетает при запуске (после заставки). Мое приложение отлично работает без распознавания голоса, но для этого приложения требуется, чтобы оно у меня было.
Этот Acer Chromebook 10 за пределами моей разработки не имеет проблем с распознаванием голоса (Окей, Google, сколько сейчас времени... и т. д.). Вот частичный снимок экрана с ошибкой, которую я получаю от logcat на Chromebook:
Я добавил разрешения в манифест (до того, как я добавил это, он работал на Pixel 2XL):
<addPermission android:name="android.permission.BIND_VOICE_INTERACTION"/>
... но все равно получаю ту же ошибку. Я не запускаю конкурирующую службу, а запускаю поток. Вот фрагмент кода, который, как я думаю, может вызывать эту ошибку (он падает сразу после заставки, поэтому я даже не получаю ответ на перехват):
try
{
_activity.runOnUiThread(new Runnable()
{
public void run()
{
// I don't know why, but we have to destroy and redo the recognizer after a failure (unlike onResult), then works great.
mSpeechRecognizer.destroy();
mSpeechRecognizer.setRecognitionListener(recognitionListener);
mSpeechRecognizerIntent = new Intent(RecognizerIntent.ACTION_RECOGNIZE_SPEECH);
mSpeechRecognizerIntent.putExtra(RecognizerIntent.EXTRA_LANGUAGE_MODEL,
RecognizerIntent.LANGUAGE_MODEL_FREE_FORM);
mSpeechRecognizerIntent.putExtra(RecognizerIntent.EXTRA_LANGUAGE, "en-US");
mSpeechRecognizer.startListening(mSpeechRecognizerIntent);
}
});
} // end of try
catch (Exception e)
{
Log.debug("Recognition failed with exception " + e.getMessage());
}
Некоторая предыстория — как в названии говорится, что этот код работает с Pixel 2XL. Это часть внутреннего плагина, который я написал для Unreal Engine для поддержки распознавания голоса. Таким образом, я проверяю разрешение «android.permission.BIND_VOICE_INTERACTION» в Blueprints (язык, похожий на блок-схему для UE4) при запуске кода на моем пикселе, и он возвращается, поэтому я знаю, что это разрешение подходит для Pixel 2XL. У меня создалось впечатление, что может быть конкурирующая служба, вызывающая конфликт конкретно на Chromebook (ArcVoiceInteractionService?), и если это так, мне нужно выяснить, как ее обойти.