仅允许访问HTML5中的摄像头设备

时间:2012-12-19 10:36:35

标签: ios html5 input camera

我目前正在使用带有

的HTML5中的iphone相机开发应用程序
<input type="file" accept="capture=camera">

问题是我有一个小清单让我在我的图书馆和相机之间做出选择。

enter image description here

我的想法是有两个按钮,一个用于库,另一个用于相机。

我知道只提供图书馆而不是相机的方式。

问题:有没有办法将两种类型分开?

4 个答案:

答案 0 :(得分:1)

不幸的是不可能:/

摘自HTML Media Capture - Security and privacy considerations

  

此外,建议用户代理实施提供   在启用输入设备并进行输入时向用户显示   用户可以终止此类捕获。同样,用户   建议代理提供用户控制,例如允许用户:

     
      
  • 如果存在,请选择要使用的确切媒体捕获设备   多个相同类型的设备(例如,前置摄像头)   除了主要相机)。

  •   
  • 在执行时禁用声音捕获   视频捕捉模式。

  •   

答案 1 :(得分:0)

我也有这个问题,我没有遇到过解决方案,我只发现非官方消息来源说这是不可能的。您只能通过video/*属性要求image/*accept

答案 2 :(得分:0)

在iOS6到10中无法实现。它适用于Android 3.0 +。

HTML Media Capture引入的<input accept="video/*,image/*" capture >属性应该强制iOS直接跳转到凸轮应用,但不支持。

来自the spec

  

capture属性是一个布尔属性,如果指定,则表示直接从设备环境中捕获媒体...是首选。

PS:您的代码稍有不正确,您应该使用 psobject来:

  1. 捕捉视频和照片
  2. 直接跳到凸轮(支持时)
  3. 有关详细信息,请参阅Correct HTML Media Capture Syntax

答案 3 :(得分:-3)

编写以下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的委托方法

当用户使用相机拍照并调整图像大小时(由于我们在创建图像选取器时说allowEditing = YES,因此允许调整大小)。它是一个NSDictionary,其中包含原始图像和编辑过的图像(可通过标记UIImagePickerControllerEditedImage访问)。

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

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

}