Bagaimana cara mengakses kamera ponsel dari aplikasi web?
191
Di aplikasi web saya (bukan aplikasi asli) untuk ponsel, saya ingin mengambil foto dan mengunggahnya, tetapi saya tidak ingin menggunakan Adobe Flash. Apakah ada cara untuk melakukan ini?
Saya mendapatkan "getUserMedia () yang tidak didukung oleh perangkat ini" - tetapi saya menggunakan safari dan memiliki ios7 - mengapa? - Dan baru saja mengedit
Baik capture="camera"(String) dan yang lebih lama accept="image/*;capture=camera"telah diganti pada tahun 2012 dengan capture="capture"(Boolean). Atribut ini digunakan untuk memaksa pengambilan alih-alih memilih dari perpustakaan. Lihat spesifikasi dan Sintaks yang Benar untuk Tangkapan Media HTML
Oktavianus Naicu
36
Setidaknya saat ini dengan android relatif mudah. Cukup gunakan tag input file normal dan ketika pengguna mengkliknya ponsel akan bertanya apakah pengguna ingin menggunakan kamera (atau manajer file dll.) Untuk mengunggah file. Ambil saja foto dengan kamera dan secara otomatis akan ditambahkan dan diunggah.
Tidak tahu tentang iphone. Mungkin seseorang bisa mengetahui hal itu. EDIT: Iphone bekerja dengan cara yang sama.
Safari & Chrome di iOS 6+ dan Android 2.2+ mendukung HTML Media Capture yang memungkinkan Anda mengambil gambar dengan kamera perangkat Anda atau memilih yang sudah ada:
<input type="file" accept="image/*">
Begini cara kerjanya di iOS 10:
Android 3.0+ dan Safari di iOS10.3 + juga mendukung captureatribut yang digunakan untuk melompat langsung ke kamera.
<input type="file" accept="image/*" capture>
capture="camera"(String) dan accept="image/*;capture=camera"(Parameter) adalah bagian dari spesifikasi lama dan digantikan oleh capture(Boolean) Rekomendasi Kandidat W3C.
Milik saya di Android hanya melompat langsung ke Memilih foto, tetapi tidak memberi saya pilihan untuk Kamera bahkan ketika saya telah mengatur capture = "camera" .... benar-benar macet
Benyaman
@Benyaman Cobalah dengan capturebukan capture="camera". Ingin tahu apa perangkat & versi Android.
Octavian Naicu
Ya, pada Android 5.0 ternyata Phonegap tidak memiliki tangkapan HTML bawaan. Jadi tidak dapat menangkap hal-hal, tidak ada perekam video, tidak ada audio, tidak ada kamera. Saya harus membangun pekerjaan di sekitar.
Benyaman
5
baik, ada fitur HTML5 baru untuk mengakses kamera perangkat asli - "getUserMedia API"
CATATAN: HTML5 dapat menangani pengambilan foto dari halaman web di perangkat Android (setidaknya pada versi terbaru, dijalankan oleh OS Honeycomb; tetapi tidak dapat mengatasinya di iPhone kecuali iOS 6).
Anda dapat menggunakan WEBRTC tetapi sayangnya itu tidak didukung oleh semua browser web. DI BAWAH INI ADALAH Tautan UNTUK MENUNJUKKAN YANG BROWSER mendukungnya
http://caniuse.com/stream
WebRTC dan getUserMediaberlebihan, <input type="file" accept="image/*">akan melakukan trik.
Oktavianus Naicu
4
AppMobi HTML5 SDK pernah menjanjikan akses ke fungsionalitas perangkat asli - termasuk kamera - dari aplikasi berbasis HTML5, tetapi tidak lagi milik Google. Alih-alih, coba jawaban berbasis HTML5 di pos ini .
Perlu dicatat bahwa fitur keamanan telah diterapkan yang mengharuskan aplikasi dijalankan secara lokal di bawah localhost, atau melalui SSL agar GetUserMedia () berfungsi.
Saya menemukan ini ketika mencoba beberapa demo yang tersedia dan kecewa ketika mereka tidak bekerja! Lihat: Pembatasan Keamanan Baru
Saya rasa Anda tidak bisa - ada draft API W3C untuk mendapatkan audio atau video, tetapi belum ada implementasi pada salah satu OS seluler utama.
Terbaik kedua Satu-satunya pilihan adalah mengikuti saran Dennis untuk menggunakan PhoneGap. Ini berarti Anda harus membuat aplikasi asli dan menambahkannya ke toko aplikasi / pasar seluler.
maaf untuk memposting ulang - saya ingin melihat apakah Anda berhasil melewati pengecualian NPE dengan klien jersey di android. terjebak :(
necromancer
0
Saya tidak tahu cara apa pun untuk mengakses kamera ponsel dari browser web tanpa mekanisme tambahan (mis. Flash atau beberapa jenis wadah yang memungkinkan akses ke API perangkat keras)
Itu masih mengharuskan aplikasi diinstal pada perangkat seluler, yang menurut saya ingin dihindari OP.
Michael Petrotta
@MichaelPetrotta apakah Anda tahu cara yang lebih baik?
Dennis Traub
2
Saya tidak percaya apa yang diminta OP itu mungkin.
Michael Petrotta
@MichaelPetrotta itulah yang saya pikirkan juga. Dan cara terbaik yang bisa saya pikirkan adalah PhoneGap, karena itu berfungsi di iOS (yang Flash tidak). Masih asli, benar, tetapi memungkinkan setidaknya sedikit akses lintas platform ke kamera dari halaman web.
Jawaban:
Di iPhone iOS6 dan dari Android ICS dan seterusnya, HTML5 memiliki tag berikut yang memungkinkan Anda mengambil gambar dari perangkat Anda:
Capture
dapat mengambil nilai seperti kamera, camcorder dan audio.Saya pikir tag ini pasti tidak akan berfungsi di iOS5, tidak yakin tentang hal itu.
sumber
<input type="file" accept="image/*;capture=camera">
. Menurut MDN, tidak adacapture
atribut untukinput
elemen.capture="camera"
(String) dan yang lebih lamaaccept="image/*;capture=camera"
telah diganti pada tahun 2012 dengancapture="capture"
(Boolean). Atribut ini digunakan untuk memaksa pengambilan alih-alih memilih dari perpustakaan. Lihat spesifikasi dan Sintaks yang Benar untuk Tangkapan Media HTMLSetidaknya saat ini dengan android relatif mudah. Cukup gunakan tag input file normal dan ketika pengguna mengkliknya ponsel akan bertanya apakah pengguna ingin menggunakan kamera (atau manajer file dll.) Untuk mengunggah file. Ambil saja foto dengan kamera dan secara otomatis akan ditambahkan dan diunggah.
Tidak tahu tentang iphone. Mungkin seseorang bisa mengetahui hal itu. EDIT: Iphone bekerja dengan cara yang sama.
Contoh dari tag input:
sumber
multiple
berfungsi baik di Android dan iOS, lihat Sintaks yang Benar untukUntuk memperbarui ini, standarnya sekarang adalah:
untuk mengakses kamera (belakang) yang menghadap lingkungan, dan
untuk kamera (depan) yang menghadap pengguna. Untuk mengakses video, gantikan "video" dengan "image" dalam nama.
Diuji pada iPhone 5c, menjalankan iOS 10.3.3, firmware 760, berfungsi dengan baik.
https://www.w3.org/TR/html-media-capture/
sumber
Safari & Chrome di iOS 6+ dan Android 2.2+ mendukung HTML Media Capture yang memungkinkan Anda mengambil gambar dengan kamera perangkat Anda atau memilih yang sudah ada:
<input type="file" accept="image/*">
Begini cara kerjanya di iOS 10:
Android 3.0+ dan Safari di iOS10.3 + juga mendukung
capture
atribut yang digunakan untuk melompat langsung ke kamera.<input type="file" accept="image/*" capture>
capture="camera"
(String) danaccept="image/*;capture=camera"
(Parameter) adalah bagian dari spesifikasi lama dan digantikan olehcapture
(Boolean) Rekomendasi Kandidat W3C.Dokumentasi dukungan: buku O'Reilly 2013 ini dan pengujian saya
sumber
capture
bukancapture="camera"
. Ingin tahu apa perangkat & versi Android.baik, ada fitur HTML5 baru untuk mengakses kamera perangkat asli - "getUserMedia API"
CATATAN: HTML5 dapat menangani pengambilan foto dari halaman web di perangkat Android (setidaknya pada versi terbaru, dijalankan oleh OS Honeycomb; tetapi tidak dapat mengatasinya di iPhone kecuali iOS 6).
sumber
Anda dapat menggunakan WEBRTC tetapi sayangnya itu tidak didukung oleh semua browser web. DI BAWAH INI ADALAH Tautan UNTUK MENUNJUKKAN YANG BROWSER mendukungnya http://caniuse.com/stream
Dan tautan ini memberi Anda gambaran tentang bagaimana Anda dapat mengaksesnya (kode sampel). http://www.html5rocks.com/en/tutorials/getusermedia/intro/
sumber
getUserMedia
berlebihan,<input type="file" accept="image/*">
akan melakukan trik.AppMobi HTML5 SDK pernah menjanjikan akses ke fungsionalitas perangkat asli - termasuk kamera - dari aplikasi berbasis HTML5, tetapi tidak lagi milik Google. Alih-alih, coba jawaban berbasis HTML5 di pos ini .
sumber
Anda ingin menggunakan getUserMedia untuk mengakses kamera.
Tutorial ini menguraikan dasar-dasar mengakses kamera perangkat dari browser: https://medium.com/@aBenjamin765/make-a-camera-web-app-tutorial-part-1-ec284af8dddf
Catatan: Ini berfungsi pada sebagian besar perangkat Android, dan hanya di iOS di Safari.
sumber
Perlu dicatat bahwa fitur keamanan telah diterapkan yang mengharuskan aplikasi dijalankan secara lokal di bawah localhost, atau melalui SSL agar GetUserMedia () berfungsi.
Saya menemukan ini ketika mencoba beberapa demo yang tersedia dan kecewa ketika mereka tidak bekerja! Lihat: Pembatasan Keamanan Baru
sumber
Saya rasa Anda tidak bisa - ada draft API W3C untuk mendapatkan audio atau video, tetapi belum ada implementasi pada salah satu OS seluler utama.
Terbaik keduaSatu-satunya pilihan adalah mengikuti saran Dennis untuk menggunakan PhoneGap. Ini berarti Anda harus membuat aplikasi asli dan menambahkannya ke toko aplikasi / pasar seluler.sumber
Saya tidak tahu cara apa pun untuk mengakses kamera ponsel dari browser web tanpa mekanisme tambahan (mis. Flash atau beberapa jenis wadah yang memungkinkan akses ke API perangkat keras)
Untuk yang terakhir lihat di PhoneGap: http://docs.phonegap.com/phonegap_camera_camera.md.html
Dengan ini, Anda harus dapat mengakses kamera setidaknya di perangkat berbasis iOS dan Android.
sumber