Разрешить доступ только к устройству камеры в 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];
}