Як отримати доступ до камери мобільного через веб-додаток?


191

У своєму веб-додатку (не рідному додатку) для мобільних пристроїв я хочу сфотографувати та завантажити його, але я не хочу використовувати Adobe Flash. Чи можна це зробити?


2
"Веб-сторінка" означає, що вона має легко мати доступ до будь-яких клієнтів / пристроїв. Отже, чи варто встановлювати обмеження?
夏 期 劇場

1
Я припускаю, ви хочете отримати доступ до апаратної камери, правда?
Денніс Трауб

Хм .. "Камера" мобільних смартфонів / тощо .. з веб-сторінки.
夏 期 劇場

Привіт, це предмет, який я зараз вивчаю для власних проектів. PWA дозволяють використовувати функції власних пристроїв у сучасних браузерах: developers.google.com/web/updates/2016/12/imagecapture
palmaone

Відповіді:


260

В iPhone iOS6 та від Android ICS далі HTML5 має такий тег, який дозволяє робити фотографії зі свого пристрою:

 <input type="file" accept="image/*" capture="camera">

Capture може приймати такі значення, як камера, відеокамера та аудіо.

Я думаю, що цей тег точно не буде працювати в iOS5, не впевнений у цьому.


32
Ось чудовий підручник: html5rocks.com/en/tutorials/getusermedia/intro
Micah

2
Тут не потрібно GetUserMedia.
Рей Ніколус

Я отримую "getUserMedia (), який не підтримується цим пристроєм", - але я перебуваю на сафарі і в мене є ios7 - чому? - Ден просто редагуйте
Дан

10
Я думаю, можливо, <input type="file" accept="image/*;capture=camera">замість цього повинен бути код . Згідно з MDN, captureатрибуту для inputелемента немає.
Кенні Евітт

9
І capture="camera"(String), і старші accept="image/*;capture=camera"були замінені в 2012 році на capture="capture"(Boolean). Атрибут використовується для примусового захоплення замість вибору з бібліотеки. Дивіться специфікацію та правильний синтаксис для захоплення HTML-медіа
Octavian Naicu

36

Сьогодні принаймні з андроїдом це досить просто. Просто використовуйте звичайний тег для введення файлів, і коли користувач натисне на нього, телефон запитає, чи хоче користувач використовувати камеру (або файлові менеджери тощо) для завантаження файлу. Просто сфотографуйте камеру, і вона автоматично додаватиметься та завантажуватись.

Поняття про iphone. Можливо, хтось може просвітити на цьому. EDIT: Iphone працює аналогічно.

Зразок вхідного тегу:

<input type="file" accept="image/*" capture="camera">

чи можете ви зробити це для кількох файлів, таких як: multiple = "multiple"
розбір

приклад: <input type = "file" accept = "image / *" multiple = "multiple" capture = "camera">
розбір

multipleпрацює як на Android, так і на iOS, див. Правильний синтаксис для захоплення HTML Media
Octavian Naicu

Не впевнений у інших пристроях Apple, принаймні, це рішення також працює на iPad зараз.
cytsunny

29

Просто для оновлення цього стандарту зараз є:

<input type="file" name="image" accept="image/*" capture="environment">

для доступу до зовнішньої (задньої) камери та

<input type="file" name="image" accept="image/*" capture="user">

для передньої (передньої) камери. Щоб отримати доступ до відео, замініть "video" на "image" на ім'я.

Тестований на iPhone 5c, на базі iOS 10.3.3, прошивки 760, працює чудово.

https://www.w3.org/TR/html-media-capture/


23

Safari та Chrome на iOS 6+ та Android 2.2+ підтримують HTML Media Capture, який дозволяє робити фотографії з камерою вашого пристрою або вибирати наявну:

<input type="file" accept="image/*">

Ось як це працює на iOS 10:

введіть тут опис зображення

Android 3.0+ і Safari на iOS10.3 + також підтримують captureатрибут, який використовується для переходу прямо до камери.

<input type="file" accept="image/*" capture>

capture="camera"(String) і accept="image/*;capture=camera"(Parameter) були частиною старих специфікацій і були замінені capture(Boolean) Рекомендацією щодо кандидата W3C.

Допоміжна документація: ця книга 2013 року O'Reilly та моє тестування


Шахта на Android просто переходить прямо до Вибору фотографій, але не дає мені можливості для камери, навіть коли я встановив захоплення = "камера" .... повністю застряг
Benyaman

@Benyaman Спробуйте з captureзамість capture="camera". Цікаво, на якому пристрої та версії Android.
Октавіан Найку

На Android 5.0, очевидно, у Phonegap немає вбудованого HTML-захоплення. Тому він не може фіксувати речі, немає відеокамери, аудіо, камери. Мені довелося будувати роботу навколо.
Беньяман

5

ну є нова функція HTML5 для доступу до камери рідного пристрою - "getUserMedia API"

ПРИМІТКА: HTML5 може працювати з захопленням фотографій із веб-сторінки на пристроях Android (принаймні, в останніх версіях, які працюють під керуванням ОС Honeycomb; але він не може обробляти їх на iPhone, але на iOS 6).


о, вибачте, виклик setUserMedia API
Луї

4

Ви можете використовувати WEBRTC, але, на жаль, він не підтримується всіма веб-браузерами. Внизу є ПОСИЛАННЯ, ЩО ВКАЗАТИ, ЯКІ БРОЗЕРИ підтримують його http://caniuse.com/stream

І це посилання дає вам уявлення про те, як ви можете отримати доступ до нього (зразок коду). http://www.html5rocks.com/en/tutorials/getusermedia/intro/


2
WebRTC і getUserMediaнадмірний, <input type="file" accept="image/*">зробить трюк.
Октавіан Найку

4

AppMobi HTML5 SDK колись обіцяв доступ до функціональних пристроїв, включаючи камеру, через додаток на базі HTML5, але більше не належить Google. Натомість спробуйте відповіді на основі HTML5 у цій публікації .


1
Я не вірю, що Google не має жодної власності на AppMobi або їх продукти.
fakeguybrushthreepwood

Ах - моя помилка, оскільки це є у веб-магазині Chrome - посилання Google видалено. Ось справжні партнери: appmobi.com/?page_id=468
Дейв Еверітт


1

Слід зазначити, що були застосовані функції захисту, які вимагають роботи програми або локально під localhost, або через SSL для GetUserMedia ().

Я виявив це, коли спробував кілька доступних демонстрацій, і був розчарований, коли вони не працювали! Див.: Нові обмеження безпеки


0

Я не думаю, що ви можете це - є API проекту W3C для отримання аудіо чи відео, але ще немає реалізації на будь-якій з основних мобільних ОС.

Другий кращий Єдиний варіант - це пропозиція Денніса використовувати PhoneGap. Це означає, що вам потрібно створити нативну програму та додати її до магазину / ринку мобільних додатків.


Вибачте, що репостуєте - я дивився, чи не обійшли ви винятком NPE з клієнтом jersey на android. застряг :(
некроман

0

Я не знаю жодного способу отримати доступ до камери мобільного телефону з веб-браузера без якогось додаткового механізму (наприклад, Flash або якогось типу контейнера, який дозволяє отримати доступ до апаратного API)

Для останніх ознайомтеся з PhoneGap: http://docs.phonegap.com/phonegap_camera_camera.md.html

Завдяки цьому ви зможете отримати доступ до камери принаймні на пристроях під керуванням iOS та Android.


4
Це все ще вимагає встановлення програми на мобільному пристрої, чого я думаю, що ОП хоче уникнути.
Майкл Петротта

@MichaelPetrotta ти знаєш кращий спосіб?
Денніс Трауб

2
Я не вірю, що можливо, просить ОП.
Майкл Петротта

@MichaelPetrotta це теж я думаю. І найкращий спосіб, що я можу придумати, - це PhoneGap, оскільки він працює на iOS (який Flash не робить). І все-таки вона справжня, правда, але дозволяє принаймні трохи крос-платформного доступу до камер із веб-сторінки.
Денніс Трауб
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.