Почему capture = "user" не меняет камеру телефона на лицевую сторону?

Я попробовал следующий атрибут capture чтобы установить элемент input чтобы попытаться выбрать фронтальную камеру. user обращен вперед, а environment обращена назад.

Однако во время экспериментов с Chrome (последняя версия) на мобильных устройствах (Pixel 1, последняя версия ОС) задняя камера по-прежнему выбрана.

Я использовал пример фрагмента:

<form action="server.cgi" method="post" enctype="multipart/form-data">
  <input type="file" name="image" accept="image/*" capture="user">
  <input type="submit" value="Upload">
</form>

(из https://w3c.github.io/html-media-capture/#the-capture-attribute)

Я могу изменить accept чтобы требовать video на моем телефоне, чтобы и другие атрибуты работали, но не атрибут capture.

РЕДАКТИРОВАТЬ: Я использую последний браузер Android Chrome. На следующей странице подразумевается, что iOS и более ранние версии Android Chrome не могут использовать capture вообще, но в противном случае могут использовать capture. https://caniuse.com/#search=html-media-capture

Ответы

Ответ 1

Я сегодня клонировал хранилище хрома (2019-07-21). Затем я использовал ripgrep, чтобы получить список файлов, которые не содержат capture. После передачи этого списка в rm я удалил все каталоги, которые были либо пустыми, либо явно не относились к делу (например, телеметрия). Просматривать оставшиеся ~ 50 файлов было относительно тривиальной задачей.

Надеемся, что команда Chrome сможет реализовать это в будущем, но в настоящее время нет никаких признаков того, что это поведение поддерживается в официальной документации, официальных сообщениях в блоге или самом коде.

Я знаю, что это не тот ответ, который вы хотели бы услышать, но это факты, которые я нашел.

Ответ 2

Будет ли Chrome специально препятствовать правильной работе кода? Я предлагаю использовать другой браузер, такой как Firefox, чтобы проверить эту теорию. Если это удастся в Firefox, то простой ответ: Chrome еще не реализовал его.

Ответ 3

Смотрите 5. Атрибут захвата:

Когда указан атрибут захвата:

  • пользовательский агент ДОЛЖЕН вызывать средство выбора файлов определенного типа управления захватом.
  • Пользовательский агент НЕ ДОЛЖЕН сохранять захваченный носитель в любое хранилище данных, локальное или удаленное.

Ответ 4

Вот несколько тестов, я включил пользовательский агент:

Не работал с:

  • Android Chrome: Mozilla/5.0 (Linux; Android 6.0; Ilium X510) AppleWebKit/537.36 (KHTML, как Gecko) Chrome/75.0.3770.143 Mobile Safari/537.36
  • Android Firefox: Mozilla/5.0 (Android 6.0; Мобильный; rv: 68.0) Gecko/68.0 Firefox/68.0

Работал с :

  • IPhone Chrome: Mozilla/5.0 (iPhone; процессор iPhone OS 12_3, как Mac OS X) AppleWebKit/605.1.15 (KHTML, как Gecko) CriOS/75.0.3770.103 Mobile/15E148 Safari/605.1
  • IPhone Safari: Mozilla/5.0 (iPhone; процессор iPhone OS 12_3_1, как Mac OS X) AppleWebKit/605.1.15 (KHTML, как Gecko) Версия /12.1.1 Mobile/15E148 Safari/604.1

В итоге:

  • Все протестированные навигаторы iPhone отображали вид спереди камеры, когда захват сделан пользователем, и вид сзади камеры, если это среда.
  • Оба протестированных Android-навигатора всегда отображали вид сзади камеры.

Таким образом, независимо от информации в принятом ответе, это не проблема браузера. Было бы полезно, если бы он работал правильно с устройством Android и конкретным браузером.

Я надеюсь, что другие люди смогут делиться тестами на своих устройствах Android, в частности на рабочих, отображая вид с передней камеры при тестировании значения атрибута capture = "user".