【问题标题】:Allow only access to camera device in HTML5仅允许访问 HTML5 中的相机设备
【发布时间】:2016-07-03 17:36:39
【问题描述】:

我目前正在使用 HTML5 中的 iPhone 相机开发应用程序

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

问题是我有一个小清单,可以让我在图书馆和相机之间进行选择。

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

我知道只给图书馆而不给相机的方法。

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

【问题讨论】:

    标签: ios html input camera


    【解决方案1】:

    不幸的是不可能:/

    HTML Media Capture - Security and privacy considerations 中提取:

    此外,建议用户代理实现提供一个 在启用输入设备时向用户指示并使其 用户可以终止此类捕获。同样,用户 建议代理提供用户控制,例如允许用户:

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


    • 中禁用声音捕获 视频拍摄模式。

    【讨论】:

      【解决方案2】:

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

      【讨论】:

      • 嗯,这真的很奇怪。为什么不让开发人员有机会只使用相机。我知道属性,再次感谢提醒我。对我们来说太糟糕了:/
      • 在大多数情况下,Apple 的某个人一直在考虑这一点,并决定不允许这样做。可能是因为用户在使用本机相机应用程序拍摄了要上传到网站的照片后,如果他/她无法从库中进行选择,他/她可能会感到恼火。也没有必要阻止图书馆的使用,是吗?
      • 好吧,我只想做一个步骤来拍照,而不是按一个按钮和另一个按钮来拍照,所以目前,这并不重要,但我想我做了我的点跳过一步:)再次感谢您提供的信息:)
      【解决方案3】:

      这在 iOS6 到 10 中是不可能的。它可以在 Android 3.0+ 上运行。

      HTML Media Capture 引入的 capture 属性应该会强制 iOS 直接跳转到 cam 应用程序,但它不受支持。

      来自the spec

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

      PS:您的代码略有错误,您应该使用 &lt;input accept="video/*,image/*" capture &gt;转:

      1. 捕捉视频和照片
      2. 直接跳转到凸轮(如果支持)

      更多详情请见Correct HTML Media Capture Syntax

      【讨论】:

        【解决方案4】:

        编写以下 takePhoto 动作方法:

        - (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];
        
        } 
        

        【讨论】:

        • 我们说的是HTML5,所以这个答案不正确
        猜你喜欢
        • 2017-05-08
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2022-01-01
        • 1970-01-01
        • 2017-06-21
        • 2018-01-06
        相关资源
        最近更新 更多