Разрешить доступ только к устройству камеры в HTML5

В настоящее время я разрабатываю приложение, используя камеру для iphone в HTML5 с

<input type="file" accept="capture=camera">

Проблема в том, что у меня есть небольшой список, который дает мне выбор между моей библиотекой и моей камерой.

enter image description here

Моя идея состоит в том, чтобы иметь две кнопки: одну для библиотеки и другую для камеры.

Я знаю способ предоставить библиотеку, но не для камеры.

Вопрос: Есть ли способ разделить эти два типа?

Ответ 1

К сожалению, невозможно:/

Извлечь из HTML Media Capture - соображения безопасности и конфиденциальности:

Кроме того, в реализации User Agent рекомендуется предоставить индикация для пользователя, когда устройство ввода включено и делает это возможно для пользователя прекратить такой захват. Аналогично, Пользователь Агент должен предлагать пользовательский контроль, например, чтобы позволить пользователю:

  • выберите точное устройство захвата медиа, которое будет использоваться, если есть несколько устройств одного типа (например, фронтальная камера в дополнение к первичной камере).

  • отключить захват звука, когда в режим захвата видео.

Ответ 2

У меня тоже была эта проблема, я не нашел решения, я нашел неофициальные источники, заявляя, что это невозможно. Все, что вы можете сделать, это либо video/*, либо image/* с помощью атрибута accept.

Ответ 3

Это невозможно в iOS6 до 10. Он работает на Android 3.0 +.

Атрибут capture, введенный HTML Media Capture, должен заставить iOS перейти прямо к приложению cam, но он не поддерживается.

От спецификация:

Атрибут capture является логическим атрибутом, который, если указан, указывает, что захват носителя непосредственно из среды устройства... является предпочтительным.

PS: Ваш код немного неправильный, вы должны использовать <input accept="video/*,image/*" capture > to:

  • захватить как видео, так и фотографии
  • перейти непосредственно к кулачке (если поддерживается)

Подробнее см. Корректный синтаксис HTML Media Capture.

Ответ 4

Напишите следующий метод takePhoto acton:

- (IBAction)takePhoto:(UIButton *)sender { 
     UIImagePickerController *picker = [[UIImagePickerController alloc] init];
     picker.delegate = self;
     picker.allowsEditing = YES;
     picker.sourceType = UIImagePickerControllerSourceTypeCamera;
     [self presentViewController:picker animated:YES completion:NULL];
} 

Наконец, мы делаем то же самое для метода selectPhoto, но изменяем sourceType на UIImagePickerControllerSourceTypePhotoLibrary.

- (IBAction)selectPhoto:(UIButton *)sender {  
     UIImagePickerController *picker = [[UIImagePickerController alloc] init];
     picker.delegate = self;
     picker.allowsEditing = YES;
     picker.sourceType = UIImagePickerControllerSourceTypePhotoLibrary;
     [self presentViewController:picker animated:YES completion:NULL];
} 

Реализация методов делегата UIImagePickerController

Когда пользователь снимает фото с камеры и изменяет размер изображения (изменение размера фотографии разрешено, так как мы сказали, что разрешено Editing = YES, когда мы создали подборщик изображений). Это NSDictionary, который содержит, среди прочего, исходное изображение и отредактированное изображение (доступное через тег UIImagePickerControllerEditedImage).

(void)imagePickerController:(UIImagePickerController *)picker didFinishPickingMediaWithInfo:(NSDictionary *)info {

     UIImage *chosenImage = info[UIImagePickerControllerEditedImage];
     self.imageView.image = chosenImage;
     [picker dismissViewControllerAnimated:YES completion:NULL];

}