Я пишу приложение 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.
Мой первый инстинкт состоит в том, что я здесь что-то не так делаю? Если это так, то что? В противном случае, что я могу сделать, чтобы исправить эту проблему?