Jak uzyskać dostęp do kamery telefonu komórkowego z aplikacji internetowej?
191
W mojej aplikacji internetowej (nie natywnej) na telefony komórkowe chcę zrobić zdjęcie i przesłać je, ale nie chcę używać Adobe Flash. Czy jest na to sposób?
Zarówno capture="camera"(String), jak i starsze accept="image/*;capture=camera"zostały zastąpione w 2012 roku capture="capture"(Boolean). Ten atrybut służy do wymuszania przechwytywania zamiast wybierania z biblioteki. Zobacz specyfikację i poprawną składnię dla przechwytywania multimediów HTML
Octavian Naicu,
36
W dzisiejszych czasach przynajmniej z Androidem jest to stosunkowo łatwe. Wystarczy użyć zwykłego znacznika wejściowego pliku, a gdy użytkownik go kliknie, telefon zapyta, czy użytkownik chce użyć aparatu (lub menedżerów plików itp.) Do przesłania pliku. Wystarczy zrobić zdjęcie aparatem, a zostanie ono automatycznie dodane i przesłane.
Nie mam pojęcia o iPhonie. Może ktoś może to oświecić. EDYCJA: iPhone działa podobnie.
Safari i Chrome na iOS 6+ i Android 2.2+ obsługują HTML Media Capture, który pozwala robić zdjęcia aparatem urządzenia lub wybrać istniejący:
<input type="file" accept="image/*">
Oto jak to działa na iOS 10:
Android 3.0+ i Safari na iOS 10.3 + obsługują również captureatrybut, który służy do przeskakiwania prosto do aparatu.
<input type="file" accept="image/*" capture>
capture="camera"(String) i accept="image/*;capture=camera"(Parameter) były częścią starych specyfikacji i zostały zastąpione capture(Boolean) Rekomendacją dla kandydatów W3C.
Mój na Androidzie przeskakuje prosto do wybierania zdjęć, ale nie daje mi opcji aparatu, nawet jeśli ustawiłem przechwytywanie = "aparat" .... całkowicie utknął
Benyaman
@Benyaman Spróbuj capturezamiast capture="camera". Ciekawe, jakie urządzenie i wersja Androida.
Octavian Naicu
Zrobiłem to, na Androidzie 5.0 najwyraźniej Phonegap nie ma wbudowanego przechwytywania HTML. Więc nie może przechwytywać rzeczy, bez kamery, bez dźwięku, bez kamery. Musiałem zbudować obejście.
Benyaman
5
no cóż, istnieją nowe funkcje HTML5 umożliwiające dostęp do natywnej kamery urządzenia - „getUserMedia API”
UWAGA: HTML5 może obsługiwać przechwytywanie zdjęć ze strony internetowej na urządzeniach z Androidem (przynajmniej w najnowszych wersjach obsługiwanych przez system operacyjny Honeycomb; ale nie obsługuje tego na iPhone'ach, ale na iOS 6).
Możesz używać WEBRTC, ale niestety nie jest obsługiwane przez wszystkie przeglądarki internetowe. PONIŻSZY LINK POKAŻ, KTÓRE PRZEGLĄDARKI obsługują to
http://caniuse.com/stream
WebRTC i getUserMediajest przesada, załatwi sprawę <input type="file" accept="image/*">.
Octavian Naicu
4
AppMobi HTML5 SDK obiecał kiedyś dostęp do natywnych funkcji urządzenia - w tym aparatu - z aplikacji opartej na HTML5, ale nie jest już własnością Google. Zamiast tego wypróbuj odpowiedzi oparte na HTML5 w tym poście .
Nie wierzę, że Google ma jakąkolwiek własność nad AppMobi lub ich produktami.
fakeguybrushthreepwood
Ach - mój błąd, ponieważ znajduje się w sklepie internetowym Chrome - odwołanie do Google zostało usunięte. Oto prawdziwi partnerzy: appmobi.com/?page_id=468
Dave Everitt
3
Będziesz chciał użyć getUserMedia, aby uzyskać dostęp do kamery.
Należy zauważyć, że zostały zaimplementowane funkcje bezpieczeństwa, które wymagają albo uruchomienia aplikacji lokalnie na localhost, albo poprzez SSL, aby GetUserMedia () działał.
Odkryłem to, wypróbowując kilka dostępnych wersji demonstracyjnych, i byłem zawiedziony, gdy nie działały! Zobacz: Nowe ograniczenia bezpieczeństwa
Nie sądzę, abyś mógł - istnieje interfejs API W3C do pobierania audio lub wideo, ale nie ma jeszcze implementacji w żadnym z głównych mobilnych systemów operacyjnych.
Drugi najlepszy Jedyną opcją jest skorzystanie z sugestii Dennisa, aby użyć PhoneGap. Oznacza to, że musisz utworzyć natywną aplikację i dodać ją do sklepu z aplikacjami mobilnymi.
przepraszam, opublikowałem ponownie - chciałem sprawdzić, czy udało ci się obejść wyjątek NPE z klientem Jersey na Androidzie. utknął :(
nekromanta
0
Nie znam żadnego sposobu uzyskania dostępu do kamery telefonu komórkowego z przeglądarki internetowej bez dodatkowego mechanizmu (tj. Flash lub jakiegoś rodzaju kontenera, który umożliwia dostęp do sprzętowego interfejsu API)
To wciąż wymaga zainstalowania aplikacji na urządzeniu mobilnym, co moim zdaniem OP chce uniknąć.
Michael Petrotta,
@MichaelPetrotta czy znasz lepszy sposób?
Dennis Traub,
2
Nie wierzę, że to, o co prosi OP, jest możliwe.
Michael Petrotta,
@MichaelPetrotta też tak myślę. A najlepszym sposobem, jaki mogę wymyślić, jest PhoneGap, ponieważ działa na iOS (co Flash nie działa). Nadal jest natywny, prawda, ale pozwala przynajmniej na dostęp do kamer między platformami ze strony internetowej.
Odpowiedzi:
W telefonie iPhone iOS6 i nowszym systemie Android ICS HTML5 ma następujący znacznik, który pozwala robić zdjęcia z urządzenia:
Capture
może przyjmować wartości takie jak kamera, kamera wideo i dźwięk.Myślę, że ten tag zdecydowanie nie będzie działał w iOS5, nie jestem tego pewien.
źródło
<input type="file" accept="image/*;capture=camera">
zamiast tego powinien być kod . Według MDN nie macapture
atrybutu dlainput
elementu.capture="camera"
(String), jak i starszeaccept="image/*;capture=camera"
zostały zastąpione w 2012 rokucapture="capture"
(Boolean). Ten atrybut służy do wymuszania przechwytywania zamiast wybierania z biblioteki. Zobacz specyfikację i poprawną składnię dla przechwytywania multimediów HTMLW dzisiejszych czasach przynajmniej z Androidem jest to stosunkowo łatwe. Wystarczy użyć zwykłego znacznika wejściowego pliku, a gdy użytkownik go kliknie, telefon zapyta, czy użytkownik chce użyć aparatu (lub menedżerów plików itp.) Do przesłania pliku. Wystarczy zrobić zdjęcie aparatem, a zostanie ono automatycznie dodane i przesłane.
Nie mam pojęcia o iPhonie. Może ktoś może to oświecić. EDYCJA: iPhone działa podobnie.
Próbka tagu wejściowego:
źródło
multiple
działa zarówno na Androidzie, jak i iOS, patrz Poprawna składnia dla przechwytywania multimediów HTMLAby to zaktualizować, standardem jest teraz:
aby uzyskać dostęp do kamery (tylnej) skierowanej do środowiska, oraz
do kamery skierowanej do użytkownika (z przodu). Aby uzyskać dostęp do wideo, zamień „video” na „image” w nazwie.
Testowany na iPhonie 5c, z systemem iOS 10.3.3, firmware 760, działa dobrze.
https://www.w3.org/TR/html-media-capture/
źródło
Safari i Chrome na iOS 6+ i Android 2.2+ obsługują HTML Media Capture, który pozwala robić zdjęcia aparatem urządzenia lub wybrać istniejący:
<input type="file" accept="image/*">
Oto jak to działa na iOS 10:
Android 3.0+ i Safari na iOS 10.3 + obsługują również
capture
atrybut, który służy do przeskakiwania prosto do aparatu.<input type="file" accept="image/*" capture>
capture="camera"
(String) iaccept="image/*;capture=camera"
(Parameter) były częścią starych specyfikacji i zostały zastąpionecapture
(Boolean) Rekomendacją dla kandydatów W3C.Dokumentacja pomocnicza: ta książka O'Reilly 2013 i moje testy
źródło
capture
zamiastcapture="camera"
. Ciekawe, jakie urządzenie i wersja Androida.no cóż, istnieją nowe funkcje HTML5 umożliwiające dostęp do natywnej kamery urządzenia - „getUserMedia API”
UWAGA: HTML5 może obsługiwać przechwytywanie zdjęć ze strony internetowej na urządzeniach z Androidem (przynajmniej w najnowszych wersjach obsługiwanych przez system operacyjny Honeycomb; ale nie obsługuje tego na iPhone'ach, ale na iOS 6).
źródło
Możesz używać WEBRTC, ale niestety nie jest obsługiwane przez wszystkie przeglądarki internetowe. PONIŻSZY LINK POKAŻ, KTÓRE PRZEGLĄDARKI obsługują to http://caniuse.com/stream
Link ten daje wyobrażenie o tym, jak uzyskać do niego dostęp (przykładowy kod). http://www.html5rocks.com/en/tutorials/getusermedia/intro/
źródło
getUserMedia
jest przesada, załatwi sprawę<input type="file" accept="image/*">
.AppMobi HTML5 SDK obiecał kiedyś dostęp do natywnych funkcji urządzenia - w tym aparatu - z aplikacji opartej na HTML5, ale nie jest już własnością Google. Zamiast tego wypróbuj odpowiedzi oparte na HTML5 w tym poście .
źródło
Będziesz chciał użyć getUserMedia, aby uzyskać dostęp do kamery.
W tym samouczku opisano podstawy dostępu do kamery urządzenia z przeglądarki: https://medium.com/@aBenjamin765/make-a-camera-web-app-tutorial-part-1-ec284af8dddf
Uwaga: Działa to na większości urządzeń z Androidem, a na iOS tylko w Safari.
źródło
Należy zauważyć, że zostały zaimplementowane funkcje bezpieczeństwa, które wymagają albo uruchomienia aplikacji lokalnie na localhost, albo poprzez SSL, aby GetUserMedia () działał.
Odkryłem to, wypróbowując kilka dostępnych wersji demonstracyjnych, i byłem zawiedziony, gdy nie działały! Zobacz: Nowe ograniczenia bezpieczeństwa
źródło
Nie sądzę, abyś mógł - istnieje interfejs API W3C do pobierania audio lub wideo, ale nie ma jeszcze implementacji w żadnym z głównych mobilnych systemów operacyjnych.
Drugi najlepszyJedyną opcją jest skorzystanie z sugestii Dennisa, aby użyć PhoneGap. Oznacza to, że musisz utworzyć natywną aplikację i dodać ją do sklepu z aplikacjami mobilnymi.źródło
Nie znam żadnego sposobu uzyskania dostępu do kamery telefonu komórkowego z przeglądarki internetowej bez dodatkowego mechanizmu (tj. Flash lub jakiegoś rodzaju kontenera, który umożliwia dostęp do sprzętowego interfejsu API)
Dla tych ostatnich zajrzyj na PhoneGap: http://docs.phonegap.com/phonegap_camera_camera.md.html
Dzięki temu powinieneś mieć dostęp do kamery przynajmniej na urządzeniach z systemem iOS i Android.
źródło