#ionic-framework #cordova-plugins #ngcordova
#ionic-framework #cordova-плагины #ngcordova
Вопрос:
Я разрабатываю гибридное приложение для Android и для IOS с использованием ionic.
При открытии камеры с 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 при открытии камеры.
Комментарии:
1. Дважды проверьте, установлен ли плагин для iOS. Я уверен, что у вас есть. Но убедитесь, прежде чем двигаться дальше.
Ответ №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. Итак, чтобы установить его в качестве источника изображения, вам нужно добавить ImageData с 'data:image/jpeg;base64,'
.