SpeechRecognizer.startListening не работает на Chromebook 10, но работает на Pixel 2XL

У меня есть код распознавания голоса, который вылетает при запуске (после заставки). Мое приложение отлично работает без распознавания голоса, но для этого приложения требуется, чтобы оно у меня было.

Этот 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?), и если это так, мне нужно выяснить, как ее обойти.


person Rob Milliken    schedule 09.01.2020    source источник
comment
Мне помог этот ответ: stackoverflow.com/a/64331678/2240880   -  person ViH    schedule 18.12.2020
comment
@VIH Спасибо. Я попробую, когда у меня будет шанс!   -  person Rob Milliken    schedule 19.12.2020