在没有Camera API的情况下,是否可以通过HTML输入从手机相机应用中获取照片?
方案
我开发了一个应用程序并通过Phonegap (Build)
封装它用户可以使用html文件输入提交照片。但是没有选择从相机拍摄新照片,只有画廊和文件(以及任何其他存储应用程序,如驱动器或保管箱,如果是这种情况)。
我想启用相机选项,但没有PhoneGap的Camera API。
解决方案
我尝试了以下解决方案但没有成功:
1。 “捕获”属性(来自Raymond Camden post)
使用此方法,您所要做的就是添加“capture”属性,如下所示:
<input type="file" capture="camera" accept="image/*" id="JustChooseAnID">
Raymond解释说,使用这种方法,你不需要使用PhoneGap的Camera API,因为谷歌开发了这个选项,并在Google IO presentation显示,并根据谷歌开发者和雷蒙德的说法,它可以工作。
但是......不适合我。
2。配置Phonegap以获取相机的许可(来自Jorge Lizaso's question)
“可能没有显示相机选项,因为您的应用没有适当的权限”
在上述问题中,提到了4种间接询问和获得使用相机的适当权限的方法。
我已经尝试了方法2和4,虽然我的应用程序现在要求相机权限并且我允许它正确,当我使用文件输入时,所有选项都显示(如图库和文件),但没有相机。
3(和1)。使用最新版本的webkit和Crosswalk来确保解决方案#1
由于我的Android webview可能过时(并且与解决方案#1不兼容),我决定在我的应用程序中包含尽可能最好的webview:the latest version of Google Chromium。
但是......再没有成功。
1,2和3合并
结果:没有......成功。
答案 0 :(得分:3)
是的,有一个解决方案,无需Cordova / PhoneGap的Camera API。
由于我所不知道的原因,CocoonJS(名为WebView +)中使用的webkit远远优于HTML5应用程序而不是phonegap的Crossswalk(请,我与Cocoon无关)
我完全放弃了我的Phonegap config.xml设置并尝试了Cocoon builder。我使用解决方案#1(文件输入中的捕获属性)并通过Cocoon添加了这些插件:
<cocoon:plugin name="cordova-plugin-camera"/>
<cocoon:plugin name="cordova-plugin-media-capture"/>
<cocoon:plugin name="cordova-plugin-media"/>
<cocoon:plugin name="cordova-plugin-file"/>
<cocoon:plugin name="cordova-plugin-device"/>
需要注意的是我刚刚安装了这些插件以获取所需的权限,但我根本就没有使用它们。
可能更有经验的开发人员会有更好的解决方案,但就目前而言,这是我找到解决此问题的最佳方法。