我在做app調用手機攝像頭及圖庫接口時,一開始是採用cordova提供的插件cordova-plugin-camera(攝像頭接口)、cordova-plugin-image-picker(調用圖庫)方法獲得本機攝像頭及圖庫訪問權限,具體如下:
獲取攝像頭
$cordovaToast.showShortCenter('正在打開攝像頭...').then(function(success) {
$cordovaCamera.getPicture(options).then(function(imageURI) {
//自定義的方法
UploadPicturesService.uploadPhoto(imageURI);
}, function(err) {
//自定義方法
UploadPicturesService.onFail(err.message);
});
}, function (error) {
// error
});
獲取圖庫接口
$cordovaToast.showShortCenter('正在打開攝像頭...').then(function(success) {
$cordovaCamera.getPicture(options).then(function(imageURI) {
//自定義方法
}, function(err) {
//自定義方法
});
}, function (error) {
// error
});
這種是常規的做法,後來我就想能不能直接用input file的方法直接調用手機攝像頭及圖庫,HTML5支持如下方法(多選、調用攝像頭、圖庫):
<input type=file>
<input type=file multiple>
<input type=file accept="image/*">
<input type=file accept="image/*;capture=camera">
在iOS設備上使用正常,但在安卓上存在不同的問題,本人親測在Android4.2、及Android4.4華爲機子上是無法調用攝像頭的,圖庫倒可以,但不支持多選,只能一張一張的選,但在Android5.0機子上,雖然也只能用調用圖庫,但圖庫裏有攝像頭的選項,可以間接調用攝像頭。
本人嘗試用cordova-plugin-inappbrowser插件,並按如下教程 http://blog.csdn.net/lovelyelfpop/article/details/52815700 配置,但結果是一樣的。所以在app開發中最好還是使用原生的接口。但如果是webapp或者是用微信瀏覽器web開發,除了使用其提供的接口外,用h5提供accept方法還是可行的。