DOMException: не удалось запустить источник звука

Я пишу приложение React и использую Web Speech API как для разговора, так и для распознавания голоса. Я написал код, который работает в настольном Chrome. Я прошу разрешения у пользователя следующим образом:

 navigator.mediaDevices
  .getUserMedia({ audio: true })
  .then(function (stream) {
        console.log('Succeeded');
        /*Handle success*/
  })
  .catch(function (err) {
        console.log('Failed: ', err)
        /*Handle failure*/
  });

Однако этот же код всегда переходит к обратному вызову catch, когда он используется с моего телефона Android, со следующей записью в консоль:

Failed: DOMException: Could not start audio source

Сайт спрашивает меня, хочу ли я разрешить использование микрофона, и когда я захожу в настройки сайта, он говорит, что микрофон и звук разрешены, что заставляет меня думать, что я хорошо выполнил часть взаимодействия с пользователем. Сайт обслуживается по HTTPS (эта проблема уже решена), поэтому я считаю, что это тоже не проблема.

В этом тесте я использую Xiaomi Mi 9 с Chrome Chrome 86.0.4240.185.

Мой первый инстинкт состоит в том, что я здесь что-то не так делаю? Если это так, то что? В противном случае, что я могу сделать, чтобы исправить эту проблему?


person NMilev    schedule 07.11.2020    source источник
comment
Вы когда-нибудь решали это? У меня такая же проблема.   -  person swooby    schedule 19.02.2021
comment
@swooby Нет, сдался, в то время функциональность не имела первостепенного значения. Я пришел к выводу, что этот API еще не полностью поддерживается на мобильных устройствах. Хотя может и ошибаться.   -  person NMilev    schedule 25.03.2021


Ответы (1)


Проверьте, есть ли у вашего Android-приложения необходимые разрешения:

android.permission.RECORD_AUDIO
android.permission.MODIFY_AUDIO_SETTINGS (might be optional)
person pwkc    schedule 11.12.2020