【问题标题】:Error while taking pictures using MeteorCamera.getPicture() while testing on a laptop在笔记本电脑上测试时使用 MeteorCamera.getPicture() 拍照时出错
【发布时间】:2014-10-03 23:48:19
【问题描述】:

我正在使用 Meteor 的 mdg:camera 插件为我的应用添加照片功能。目前,我没有设置任何 PhoneGap 设备,所以我正在笔记本电脑上进行测试。我以为我在某处读到 Meteor 实现会在相机不可用时回退并使用简单的文件对话框,但是当我尝试在笔记本电脑上运行以下代码时:

var cameraOptions = {
    width: 800,
    height: 600
};

MeteorCamera.getPicture(cameraOptions, function (err, data) {
    if (err) {
        console.log(err);
        // TODO Need to handle the error
    } else {
        if (!this.photos) {
            this.photos = [];
        }

        this.photos.push({ submitted_by: Meteor.userId(), submitted_on: new Date(), photo_data: data});
    }
});

我得到错误:

Meteor.makeErrorType.errorClass {error: "unknownError", reason: "There was an error while accessing the camera.", details: undefined, message: "There was an error while accessing the camera. [unknownError]", errorType: "Meteor.Error"…}

我实际上希望用户能够在使用笔记本电脑时通过同一个按钮上传照片。值得一提的是,我确实内置了一个摄像头,而且我正在 15 英寸 MacBook Pro 上进行开发。

【问题讨论】:

    标签: meteor meteor-plugin


    【解决方案1】:

    在浏览器客户端,mdg:camera 使用navigator.getUserMedia 尝试从网络摄像头获取视频流,它不允许用户上传照片。

    https://github.com/meteor/mobile-packages/blob/master/packages/mdg:camera/photo-browser.js#L41

    不幸的是,正如我们所说的,getUserMedia 缺乏对 Safari 的支持,这可能是您在 MacBook 上使用的浏览器。

    http://caniuse.com/#feat=stream

    在 Google Chrome 或 Firefox 上尝试您的应用程序。

    【讨论】:

    • 我实际上正在使用 Chrome。 Safari是魔鬼。让它工作的任何提示?我知道我的网络摄像头灯熄灭了,所以也许是因为我以某种方式禁用了它?
    • 在 chrome 的地址栏的最右侧,您应该会看到一个摄像机图标,如​​果它被禁用,它将被红色划掉,如果一切正常,请单击它以更改权限执行对 getUserMedia 的调用时,系统会提示您授予用户访问网络摄像头的权限。
    • 如果 mdg:camera 回退到 navigator.getUserMedia 如果我的应用程序正在移动网络中使用(例如 Safari )?我刚刚在移动 Safari 中尝试了 Facebook,它显示了允许相机照片和照片库的按钮 - 它很漂亮!在桌面上,我可以使用设备检测来显示不同的界面。我想我可以使用Meteor.isCordova 来切换移动 Safari 的界面?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-09-06
    • 2011-01-14
    • 2016-02-18
    • 2020-09-27
    相关资源
    最近更新 更多