cordova-plugin-camera在IOS中无效

时间:2016-10-21 12:47:03

标签: ionic-framework cordova-plugins ngcordova

我正在为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中运行。

1 个答案:

答案 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。