Ma condition est d'accéder à la caméra mobile dans iOS et Android en utilisant le navigateur mobile.
En utilisant Ionic PWA app, puis-je accéder à la caméra mobile dans iOS et Android navigateurs d'appareils? Vous recherchez une solution PWA en utilisant Cordova (pas une solution native).
Tout en travaillant sur un PWA. Je suis tombé sur la nécessité d'accéder à la caméra/aux images d'un appareil mobile (une application native était hors de question). Après avoir fait quelques recherches, je suis tombé sur cette petite pépite.
<input type="file" accept="image/*" capture="camera" />
En ajoutant les attributs d'acceptation et de capture, j'ai pu accéder à la caméra et aux images de mon téléphone. Je dois également souligner que vous n'avez rien à faire de spécial côté serveur (Node ou PHP). Il agit comme une entrée de téléchargement de fichier standard dans un navigateur.
Si vous souhaitez utiliser l'appareil photo dans une application Ionic PWA, vous pouvez utiliser Capacitor: https://capacitor.ionicframework.com/docs/apis/camera
J'ai implémenté la fonction caméra et cela fonctionne à 100%:
Vous pouvez ouvrir des appareils vidéo dans le navigateur Web ...
<video id="cameraPlayer"></video>
// find the video devices (font/back cameras etc)
navigator.mediaDevices.enumerateDevices().then(function (devices) {
// https://developer.mozilla.org/en-US/docs/Web/API/MediaDevices/enumerateDevices
devices.forEach(function (device) {
if (device.kind === 'videoinput') {
cameraDeviceIds.Push(device.deviceId)
}
})
})
// attach camera output to video tag
navigator.mediaDevices.getUserMedia({
video: { deviceId: { exact: cameraDeviceIds[currentCameraIndex] } }
}).then(function (stream) {
document.getElementById("cameraPlayer").srcObject = stream
})
Si vous voulez juste une image, vous pouvez utiliser une entrée
<input type="file" accept="image/*" id="inputPhoto" class="hidden" capture="environment" />
// trigger capture
document.getElementById('inputPhoto').click()
// event handler for change
function onInputPhotoChange() {
if (document.getElementById('inputPhoto').files.length === 0) {
return
}
var reader = new window.FileReader()
reader.onloadend = function (event) {
event.target.result
// image data
// note you may need to rotate using EXIF data on a canvas
}
// Read the file into memory as dataurl
var blob = document.getElementById('inputPhoto').files[0]
reader.readAsDataURL(blob)
}
Comme il est évident, vous devez accéder à la caméra en utilisant [~ # ~] html [~ # ~] et javascript .
HTML5 introduit une nouvelle fonctionnalité que vous pouvez accéder à la caméra des utilisateurs une fois l'autorisation accordée en posant une question à l'utilisateur. Voici un lien que vous pouvez suivre l'étape d'accès à la caméra depuis le navigateur en utilisant HTML5 et javascript: serMedia
Voici une autre question de stackoverflow qui résoudra votre problème s'il y en a. accéder à la caméra depuis le navigateur
La solution donnée ci-dessus ne fait que sélectionner le fichier restitué à la catégorie i mages uniquement. Mais nous voulons accéder à la caméra ou au périphérique audio ici du navigateur. Donc, pour sauver ce problème, voici l'api du navigateur ("les navigateurs sont puissants maintenant ouais").
getUserMedia (: vrai/faux)
Ici <media_type>
Est le type de média auquel vous souhaitez accéder comme l'audio, la vidéo. Vous pouvez le définir comme {audio: true/false}
Et {video:true/false}
. Mais l'erreur "NotFoundError" sera renvoyée si le média n'est pas trouvé.
Voici par exemple; :>
if('mediaDevices' in navigator && 'getUserMedia' in navigator.mediaDevices){ const stream = await navigator.mediaDevices.getUserMedia({video: true}) }
En plus des réponses ci-dessus, vous devrez l'ajouter dans votre fichier index.html, pour que la caméra fonctionne sur PWA
<script nomodule="" src="https://unpkg.com/@ionic/[email protected]/dist/ionicpwaelements/ionicpwaelements.js"></script>