【问题标题】:Camera doesn't work after compilation编译后相机不工作
【发布时间】:2016-10-25 10:17:37
【问题描述】:

我使用 Ionic 框架

相机在 Ionic View 中完美运行。但它在 iOS 上编译后不起作用。

请帮忙找出问题所在。

services.js 中的相机代码:

app.factory('FileService', function() {
  var images;
  var IMAGE_STORAGE_KEY = 'dav-images';

  function getImages() {
    var img = window.localStorage.getItem(IMAGE_STORAGE_KEY);
    if (img) {
      images = JSON.parse(img);
    } else {
      images = [];
    }
    return images;
  };

  function addImage(img) {
    images.push(img);
    window.localStorage.setItem(IMAGE_STORAGE_KEY, JSON.stringify(images));
  };

  return {
    storeImage: addImage,
    images: getImages
  }
});

app.factory('ImageService', function($cordovaCamera, FileService, $q, $cordovaFile) {

  function optionsForType(type) {
    var source;
    switch (type) {
      case 0:
        source = Camera.PictureSourceType.CAMERA;
        break;
      case 1:
        source = Camera.PictureSourceType.PHOTOLIBRARY;
        break;
    }
    return {
      quality: 90,
      destinationType: Camera.DestinationType.DATA_URL,
      sourceType: source,
      allowEdit: false,
      encodingType: Camera.EncodingType.JPEG,
      popoverOptions: CameraPopoverOptions,
      saveToPhotoAlbum: false,
      correctOrientation:true
    };
  }

  function saveMedia(type) {
    return $q(function(resolve, reject) {
      var options = optionsForType(type);

      $cordovaCamera.getPicture(options).then(function(imageBase64) {
        FileService.storeImage(imageBase64);
      });
    })
  }
  return {
    handleMediaDialog: saveMedia
  }
});

controllers.js 中的相机代码:

app.controller('CameraController', function($scope, $cordovaDevice, $cordovaFile, $ionicPlatform, $cordovaEmailComposer, $ionicActionSheet, ImageService, FileService) {

  $ionicPlatform.ready(function() {
    $scope.images = FileService.images();
    $scope.$apply();
  });

  $scope.addMedia = function() {
    $scope.hideSheet = $ionicActionSheet.show({
      buttons: [
        { text: 'Take photo' },
        { text: 'Photo from library' }
      ],
      titleText: 'Add images',
      cancelText: 'Cancel',
      buttonClicked: function(index) {
        $scope.addImage(index);
      }
    });
  }

  $scope.addImage = function(type) {
    $scope.hideSheet();
    ImageService.handleMediaDialog(type).then(function() {
      $scope.$apply();
    });
  }

  $scope.sendEmail = function() {
    if ($scope.images != null && $scope.images.length > 0) {
      var mailImages = [];
      var savedImages = $scope.images;
      for (var i = 0; i < savedImages.length; i++) {
        mailImages.push('base64:attachment'+i+'.jpg//' + savedImages[i]);
      }
      $scope.openMailComposer(mailImages);
    }
  }

  $scope.openMailComposer = function(attachments) {
    var bodyText = '<html><h2>My Images</h2></html>';
    var email = {
      to: '',
      attachments: attachments,
      subject: 'Devdactic Images',
      body: bodyText,
      isHtml: true
    };

    $cordovaEmailComposer.open(email, function(){
      console.log('email view dismissed');
    }, this);
  }
});

【问题讨论】:

  • 按照你说的,我相信你只是忘了做:cordova plugin add cordova-plugin-camera。如果这不起作用,请发布您的代码并告诉我们真正不起作用的地方。
  • cordova 插件添加 cordova-plugin-camera 已添加。这是代码的链接:github.com/vitaly-safonov/Hair-plus
  • 请详细描述您的问题。您得到的错误或行为是什么?您是否尝试过查看 Safari 控制台?另外对于您的代码,请学习How to create a Minimal, Complete, and Verifiable example。我们不会阅读您的所有代码来查找您使用相机的位置。
  • 在我的问题中添加了相机代码。
  • 谢谢。还请描述什么不工作并验证控制台

标签: ios cordova ionic-framework ionic-view


【解决方案1】:

要解决此问题,您需要使用 XCode 编译应用程序。 XCode编译后摄像头正常工作。

可能相机问题是由Ionic编译引起的。

【讨论】:

    猜你喜欢
    • 2013-10-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-09-10
    • 1970-01-01
    • 1970-01-01
    • 2018-05-19
    相关资源
    最近更新 更多