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