【发布时间】:2013-10-05 16:39:09
【问题描述】:
我正在为 Firefox OS 开发一个应用程序,它应该在 一个元素被触摸了。
我在互联网上进行了搜索,但我找不到这样做的方法,除非我要启动“网络活动”并让用户选择要选择的应用程序。
我想强制启动相机应用程序,而不是让用户选择要启动的应用程序。有办法吗? (我真的希望如此!)
感谢您提前回答!
洛伦佐
【问题讨论】:
标签: javascript html firefox camera firefox-os
我正在为 Firefox OS 开发一个应用程序,它应该在 一个元素被触摸了。
我在互联网上进行了搜索,但我找不到这样做的方法,除非我要启动“网络活动”并让用户选择要选择的应用程序。
我想强制启动相机应用程序,而不是让用户选择要启动的应用程序。有办法吗? (我真的希望如此!)
感谢您提前回答!
洛伦佐
【问题讨论】:
标签: javascript html firefox camera firefox-os
启动摄像头(应用程序)和访问摄像头(硬件)是两件不同的事情 - 根据您的需要,您可能需要摄像头 API(如 Jack 所建议的那样)从设备摄像头硬件中提取图像/视频,或者您可能只想启动内置的相机应用,以便用户可以与之交互(无需从该交互中检索任何结果,例如照片)。
很遗憾,目前这两个用例都受到 Firefox OS 的权限系统的限制。
对摄像头的直接硬件访问需要"Certified" 级别的权限,这会阻止它在第三方应用程序中使用。如果您需要此功能,your best chance 将等到WebRTC (the getUserMedia() API) 登陆 Firefox OS 设备,这将使您可以直接访问第三方应用程序中的摄像头和麦克风硬件(有 already some experiments on early Nightly builds of FxOS 使用WebRTC getUserMedia API 在实际设备上,因此您应该很快就会将它提供给最终用户使用)。 请密切关注bug 750011 以跟踪实施进度。
另一个用例是从您的应用程序启动内置相机应用程序。要在设备上启动已安装的应用程序,您需要引用其 App object,调用 App 对象的 .launch() 方法会启动选定的应用程序。不幸的是,目前获取所述应用程序对象的唯一方法似乎是通过Apps.mgmt.getAll() 函数调用,它列出了您设备上所有已安装的应用程序 - 扫描列表您将能够选择相机应用程序,并使用它的@ 987654336@ 方法来启动它。你可以在Kevin Grandon's "Matchscreen" homescreen-experiment 中see this in action。不幸的是,权限系统在这个用例中也有最终决定权,正如Apps.mgmt 对象调用的那样,也需要“认证”级别的权限(webapps-manage 权限)。这是第三方主屏幕 (like the one by Matteo D'Ignazio) 目前无法运行和实际启动应用程序的主要原因之一。不过,有一个 ongoing discussion 关于放宽这方面的要求,并且关于第三方主屏幕的工作正在进行中,因此(及时)这也应该得到解决。
【讨论】:
从解释 App permissions 的 mdn 页面上可以看出,相机 API 尚不可供第三方开发人员使用,但有计划在未来推出。
注意:相机仅限于经过认证的应用程序的原因是应用程序运行的沙箱阻止访问相机硬件。我们的目标是尽快将其提供给第三方应用,但在初始版本中我们没有时间这样做。
【讨论】:
半年后,您可以在 FxOS 中使用 webRTC(getUserMedia API) 访问相机,就像在现代桌面浏览器中一样。这将是一种首选方式,而不是过时的 mozCamera API(不能用于 3rd 方开发人员)。
【讨论】: