我正在为Android和IOS开发一个混合应用程序,使用离子。
从Android打开相机时效果很好,但我无法从IOS设备打开相机。
我为那个
安装了相应的插件 cordova plugin add cordova-plugin-camera
。
接下来我将ng-cordova.js
添加到index.html
行之前的cordova.js
。
同样在app.js
我包括angular.module('starter', ['ionic', 'ngCordova']
在Controller.js中添加$cordovaCamera
我的代码为
navigator.camera.getPicture(onSuccess,onFail, {
quality:90
destinationType:Camera.DestinationType.DATA_URL,
sourceType:Camera.PictureSourceType.CAMERA,
allowEdit:false,
encodingType:Camera.EncodingType.JPEG,
popoverOptions:CameraPopoverOptions,
saveToPhotoAlbum:true,
correctOrientation:true
})
function onSuccess(imageURI){
$rootScope.$broadcast("ShowAttachmentModal",imageURI);
}
function onSuccess(message){
alert('Failed'+message);
}
此代码在Android中完美运行,但在打开相机时无法在IOS中运行。
答案 0 :(得分:1)
@MartinP,而不是弃用的ngCordova,看看你是否可以使用替换库Ionic-Natve(http://ionicframework.com/docs/v2/native/camera/)。
然后尝试使用此代码。
function takePicture() {
var opts = {
quality: 90,
encodingType: $cordovaCamera.EncodingType.JPEG,
destinationType: $cordovaCamera.DestinationType.DATA_URL,
correctOrientation: true,
allowEdit: true,
targetWidth: 300,
targetHeight: 300
};
$cordovaCamera.getPicture(opts).then(function (imageData) {
$rootScope.$broadcast("ShowAttachmentModal",imageData);;
}, function (err) {
$log.error(err);
});
}
Cordova插件是一样的。您需要将$ cordovaCamera注入您的控制器。一旦它工作,那么你可以玩这些选项。您可能知道,DATA_URL选项返回Base64编码的字符串。因此,要将其设置为图片的来源,您需要在'data:image/jpeg;base64,'
之前添加imageData。