2
votes

getUserMedia fonctionne sur le site Web mais ne fonctionne pas sur mobile

J'utilise getusermedia pour enregistrer de l'audio sur mon site Web. J'ai inclus le javascript de getusermedia. La fonction d'enregistrement fonctionne bien sur le site Web, mais ne s'affiche même pas pour obtenir l'autorisation lors de son ouverture sur mobile.

var constraints = {
  audio: true,
  video: false
}
navigator.mediaDevices.getUserMedia(constraints).then(function(stream) {
  permissiongiven = 1;
});

voici l'exemple de code qui me demande l'autorisation mais ne fonctionne pas sur mobile. Comment puis-je le faire fonctionner sur les deux appareils. Toute aide est appréciée. Merci.

Modifier: - Le code fonctionne désormais correctement sur mobile également. Peut-être que cela a été résolu à partir des mises à jour de chrome ou des certificats de sécurité du site Web. Merci à tous pour votre aide.


4 commentaires

Quel système d'exploitation / navigateur mobile utilisez-vous?


J'utilise Android avec la version Marshmallow et le navigateur Chrome.


Ma réponse ci-dessous vous a-t-elle aidé?


Merci à tous mais le problème est résolu automatiquement. Je suppose que l'application Chrome a mis à jour ses fonctionnalités pour permettre l'accès au microphone à partir de sites Web.


5 Réponses :


1
votes

J'ai trouvé ce site Web utile pour répondre à cette question

https://caniuse.com/#search=getusermedia

Il indique que getUserMedia n'est pris en charge que par Chrome pour la version 70 d'Android (sortie le 16 octobre 2018)


4 commentaires

Ce n'est pas juste. MDN utilise getUserMedia dans Chrome pour Android depuis 52.


Des progrès à ce sujet?


Progrès sur quoi? caniuse a tort et MDN a raison AFAIK. Wfm sur Chrome pour Android 68 par exemple.


Le PO a-t-il fait des progrès avec son problème?



0
votes

Vérifiez MDN , puis effectuez assurez-vous que votre navigateur le prend en charge. Vous avez besoin de Chrome pour Android 52+, dit-il. FWIW 68 fonctionne pour moi .

Vous devriez également vérifier et détecter les erreurs:

if (!navigator.mediaDevices) {
  console.log("Sorry, getUserMedia is not supported");
  return;
}

navigator.mediaDevices.getUserMedia(constraints)
.then(stream => permissiongiven = 1)
.catch(error => console.log(error));

En fonction de l'erreur que vous obtenez, nous pourrions en savoir plus.

  • NotFoundError signifie qu'aucune caméra ou micro n'a été détecté sur l'appareil.
  • NotAllowedError signifie que la permission de l'utilisateur n'est pas accordée, ou que vous êtes dans un iframe ou non https.


0 commentaires

0
votes

navigator.mediaDevices.getUserMedia Compatibilité du navigateur

 entrez la description de l'image ici


0 commentaires

0
votes

Je ne savais pas que navigator.getUserMedia était obsolète (du moins pour Samsung, sur lequel je testais), et j'ai trouvé cet article sur l'audio Web avec un exemple de code que j'ai à peine modifié:

p >

function initGetUserMedia() {
  navigator.mediaDevices = navigator.mediaDevices || {}
  navigator.mediaDevices.getUserMedia = navigator.mediaDevices.getUserMedia || function(constraints) {
    let getUserMedia = navigator.webkitGetUserMedia || navigator.mozGetUserMedia;
    if (!getUserMedia) {
      return Promise.reject(new Error('getUserMedia not supported by this browser'));
    } else {
      return new Promise((resolve, reject) => {
        getUserMedia.call(navigator, constraints, resolve, reject);
      });
    }
  }
}


0 commentaires

2
votes

Notez que sur les appareils mobiles, vous devez utiliser SSL pour utiliser getUserMedia () . Vérifiez si vous accédez à votre site Web avec un préfixe http: // . Essayez de le changer en https: // et cela devrait fonctionner correctement.


0 commentaires