Wie kann ich über eine Web-App auf die Kamera eines Mobiltelefons zugreifen?
190
In meiner Web-App (keine native App) für Handys möchte ich ein Foto aufnehmen und hochladen, aber ich möchte Adobe Flash nicht verwenden. Gibt es eine Möglichkeit, dies zu tun?
Ich erhalte ein "getUserMedia (), das von diesem Gerät nicht unterstützt wird" - aber ich bin auf Safari und habe ios7 - warum? - Dan gerade bearbeiten
Sowohl capture="camera"(String) als auch die älteren accept="image/*;capture=camera"wurden 2012 durch capture="capture"(Boolean) ersetzt. Das Attribut wird verwendet, um die Erfassung zu erzwingen, anstatt aus der Bibliothek auszuwählen. Siehe die Spezifikation und die korrekte Syntax für HTML Media Capture
Octavian Naicu
36
Heutzutage ist es zumindest mit Android relativ einfach. Verwenden Sie einfach das normale Dateieingabetag. Wenn der Benutzer darauf klickt, fragt das Telefon, ob der Benutzer eine Kamera (oder Dateimanager usw.) zum Hochladen einer Datei verwenden möchte. Nehmen Sie einfach ein Foto mit der Kamera auf und es wird automatisch hinzugefügt und hochgeladen.
Keine Ahnung von iPhone. Vielleicht kann jemand darüber aufklären. EDIT: Iphone funktioniert ähnlich.
Safari & Chrome unter iOS 6+ und Android 2.2+ unterstützen HTML Media Capture, mit dem Sie Bilder mit der Kamera Ihres Geräts aufnehmen oder eine vorhandene auswählen können:
<input type="file" accept="image/*">
So funktioniert es unter iOS 10:
Android 3.0+ und Safari unter iOS 10.3 + unterstützen auch das captureAttribut, mit dem direkt zur Kamera gesprungen wird.
<input type="file" accept="image/*" capture>
capture="camera"(String) und accept="image/*;capture=camera"(Parameter) waren Teil alter Spezifikationen und wurden durch ersetztcapture (Boolean) die W3C-Kandidatenempfehlung ersetzt.
Meins auf Android springt direkt zu Auswählen von Fotos, gibt mir aber nicht die Option für Kamera, selbst wenn ich Capture = "Kamera" eingestellt habe .... total festgefahren
Benyaman
@ Benyaman Versuchen Sie es mit capturestatt capture="camera". Neugierig welches Gerät & Android Version.
Octavian Naicu
Ich habe auf Android 5.0 anscheinend keine integrierte HTML-Erfassung in Phonegap. Es kann also keine Dinge erfassen, kein Camrecord, kein Audio, keine Kamera. Ich musste eine Arbeit bauen.
Benyaman
5
Nun, es gibt eine neue HTML5-Funktion für den Zugriff auf die native Gerätekamera - "getUserMedia API".
HINWEIS: HTML5 kann die Fotoaufnahme von einer Webseite auf Android-Geräten verarbeiten (zumindest in den neuesten Versionen, die vom Honeycomb-Betriebssystem ausgeführt werden; auf iPhones außer iOS 6 jedoch nicht).
Sie können WEBRTC verwenden, aber leider wird es nicht von allen Webbrowsern unterstützt. UNTEN IST DER LINK, DER ZEIGT, WAS BROWSERS unterstützt
http://caniuse.com/stream
WebRTC und getUserMediaist übertrieben, <input type="file" accept="image/*">wird den Trick machen.
Octavian Naicu
4
Das AppMobi HTML5 SDK versprach einmal den Zugriff auf native Gerätefunktionen - einschließlich der Kamera - über eine HTML5-basierte App, ist jedoch nicht mehr im Besitz von Google. Versuchen Sie stattdessen die HTML5-basierten Antworten in diesem Beitrag .
Es ist zu beachten, dass Sicherheitsfunktionen implementiert wurden, bei denen die App entweder lokal unter localhost oder über SSL ausgeführt werden muss, damit GetUserMedia () funktioniert.
Ich habe dies entdeckt, als ich einige der verfügbaren Demos ausprobiert habe, und war enttäuscht, als sie nicht funktionierten! Siehe: Neue Sicherheitsbeschränkungen
Ich glaube nicht, dass Sie das können - es gibt einen W3C-API-Entwurf , um Audio oder Video abzurufen, aber es gibt noch keine Implementierung auf einem der großen mobilen Betriebssysteme.
Zweitbeste Die einzige Möglichkeit besteht darin, Dennis 'Vorschlag zu folgen, PhoneGap zu verwenden. Dies bedeutet, dass Sie eine native App erstellen und zum mobilen App Store / Marktplatz hinzufügen müssen.
Entschuldigung für das Umbuchen - ich habe nachgesehen, ob Sie die NPE-Ausnahme mit dem Jersey-Client auf Android umgangen haben. stecken :(
Nekromant
0
Ich kenne keine Möglichkeit, über den Webbrowser über einen Webbrowser auf die Kamera eines Mobiltelefons zuzugreifen (z. B. Flash oder eine Art Container, der den Zugriff auf die Hardware-API ermöglicht).
Dazu muss immer noch eine App auf dem mobilen Gerät installiert sein, was das OP meiner Meinung nach vermeiden möchte.
Michael Petrotta
@ MichaelPetrotta kennst du einen besseren Weg?
Dennis Traub
2
Ich glaube nicht, dass das, was das OP verlangt, möglich ist.
Michael Petrotta
@ MichaelPetrotta das denke ich auch. Und der beste Weg, den ich mir vorstellen kann, wäre PhoneGap, da es unter iOS funktioniert (was Flash nicht tut). Es ist zwar nativ, ermöglicht aber zumindest einen plattformübergreifenden Zugriff auf Kameras von einer Webseite aus.
Antworten:
In iPhone iOS6 und ab Android ICS verfügt HTML5 über das folgende Tag, mit dem Sie Bilder von Ihrem Gerät aufnehmen können:
Capture
kann Werte wie Kamera, Camcorder und Audio annehmen.Ich denke, dieses Tag wird definitiv nicht in iOS5 funktionieren, nicht sicher.
quelle
<input type="file" accept="image/*;capture=camera">
stattdessen sein. Laut MDN gibt es keincapture
Attribut für eininput
Element.capture="camera"
(String) als auch die älterenaccept="image/*;capture=camera"
wurden 2012 durchcapture="capture"
(Boolean) ersetzt. Das Attribut wird verwendet, um die Erfassung zu erzwingen, anstatt aus der Bibliothek auszuwählen. Siehe die Spezifikation und die korrekte Syntax für HTML Media CaptureHeutzutage ist es zumindest mit Android relativ einfach. Verwenden Sie einfach das normale Dateieingabetag. Wenn der Benutzer darauf klickt, fragt das Telefon, ob der Benutzer eine Kamera (oder Dateimanager usw.) zum Hochladen einer Datei verwenden möchte. Nehmen Sie einfach ein Foto mit der Kamera auf und es wird automatisch hinzugefügt und hochgeladen.
Keine Ahnung von iPhone. Vielleicht kann jemand darüber aufklären. EDIT: Iphone funktioniert ähnlich.
Beispiel für das Eingabe-Tag:
quelle
multiple
funktioniert sowohl unter Android als auch unter iOS, siehe Richtige Syntax für HTML Media CaptureUm dies zu aktualisieren, lautet der Standard jetzt:
um auf die nach hinten gerichtete Kamera zuzugreifen, und
für benutzerbezogene (Front-) Kamera. Um auf Video zuzugreifen, ersetzen Sie "Bild" im Namen durch "Video".
Getestet auf dem iPhone 5c unter iOS 10.3.3, Firmware 760, funktioniert einwandfrei.
https://www.w3.org/TR/html-media-capture/
quelle
Safari & Chrome unter iOS 6+ und Android 2.2+ unterstützen HTML Media Capture, mit dem Sie Bilder mit der Kamera Ihres Geräts aufnehmen oder eine vorhandene auswählen können:
<input type="file" accept="image/*">
So funktioniert es unter iOS 10:
Android 3.0+ und Safari unter iOS 10.3 + unterstützen auch das
capture
Attribut, mit dem direkt zur Kamera gesprungen wird.<input type="file" accept="image/*" capture>
capture="camera"
(String) undaccept="image/*;capture=camera"
(Parameter) waren Teil alter Spezifikationen und wurden durch ersetztcapture
(Boolean) die W3C-Kandidatenempfehlung ersetzt.Support-Dokumentation: Dieses O'Reilly-Buch 2013 und meine Tests
quelle
capture
stattcapture="camera"
. Neugierig welches Gerät & Android Version.Nun, es gibt eine neue HTML5-Funktion für den Zugriff auf die native Gerätekamera - "getUserMedia API".
HINWEIS: HTML5 kann die Fotoaufnahme von einer Webseite auf Android-Geräten verarbeiten (zumindest in den neuesten Versionen, die vom Honeycomb-Betriebssystem ausgeführt werden; auf iPhones außer iOS 6 jedoch nicht).
quelle
Sie können WEBRTC verwenden, aber leider wird es nicht von allen Webbrowsern unterstützt. UNTEN IST DER LINK, DER ZEIGT, WAS BROWSERS unterstützt http://caniuse.com/stream
Über diesen Link erhalten Sie eine Vorstellung davon, wie Sie darauf zugreifen können (Beispielcode). http://www.html5rocks.com/de/tutorials/getusermedia/intro/
quelle
getUserMedia
ist übertrieben,<input type="file" accept="image/*">
wird den Trick machen.Das AppMobi HTML5 SDK versprach einmal den Zugriff auf native Gerätefunktionen - einschließlich der Kamera - über eine HTML5-basierte App, ist jedoch nicht mehr im Besitz von Google. Versuchen Sie stattdessen die HTML5-basierten Antworten in diesem Beitrag .
quelle
Sie möchten getUserMedia verwenden, um auf die Kamera zuzugreifen.
Dieses Tutorial beschreibt die Grundlagen des Zugriffs auf eine Gerätekamera über den Browser: https://medium.com/@aBenjamin765/make-a-camera-web-app-tutorial-part-1-ec284af8dddf
Hinweis: Dies funktioniert auf den meisten Android-Geräten und unter iOS nur in Safari.
quelle
Es ist zu beachten, dass Sicherheitsfunktionen implementiert wurden, bei denen die App entweder lokal unter localhost oder über SSL ausgeführt werden muss, damit GetUserMedia () funktioniert.
Ich habe dies entdeckt, als ich einige der verfügbaren Demos ausprobiert habe, und war enttäuscht, als sie nicht funktionierten! Siehe: Neue Sicherheitsbeschränkungen
quelle
Ich glaube nicht, dass Sie das können - es gibt einen W3C-API-Entwurf , um Audio oder Video abzurufen, aber es gibt noch keine Implementierung auf einem der großen mobilen Betriebssysteme.
ZweitbesteDie einzige Möglichkeit besteht darin, Dennis 'Vorschlag zu folgen, PhoneGap zu verwenden. Dies bedeutet, dass Sie eine native App erstellen und zum mobilen App Store / Marktplatz hinzufügen müssen.quelle
Ich kenne keine Möglichkeit, über den Webbrowser über einen Webbrowser auf die Kamera eines Mobiltelefons zuzugreifen (z. B. Flash oder eine Art Container, der den Zugriff auf die Hardware-API ermöglicht).
Für letztere schauen Sie sich PhoneGap an: http://docs.phonegap.com/phonegap_camera_camera.md.html
Damit sollten Sie zumindest auf iOS- und Android-basierten Geräten auf die Kamera zugreifen können.
quelle