科尔多瓦相机 - 离子

时间:2014-07-28 16:43:06

标签: android angularjs cordova yeoman ionic-framework

我一直在寻找最近近2天的解决方案。 我试图使用ngCordova Camera插件。

我使用了带有AngularJS的离子 - 自然框架。

我做的是:

bower install --save ngCordova.

ngCordova添加了app.module。 安装了cordova相机插件:

cordova plugin add org.apache.cordova.camera.

我的控制器:

.controller('profileCtrl', function($scope, myService, $cordovaCamera)
{
  $scope.takePicture = function() {
    var options = { 
        quality : 75, 
        destinationType : Camera.DestinationType.DATA_URL, 
        sourceType : Camera.PictureSourceType.CAMERA, 
        allowEdit : true,
        encodingType: Camera.EncodingType.JPEG,
        targetWidth: 100,
        targetHeight: 100,
        popoverOptions: CameraPopoverOptions,
        saveToPhotoAlbum: false
    };

    $cordovaCamera.getPicture(options).then(function(imageData) {
      // Success! Image data is here
    }, function(err) {
      // An error occured. Show a message to the user
    });
  }

  myService.getFoo().then(function(data) {
   //this will execute when the 
   //AJAX call completes.
   $scope.items = data;
  });
})

我收到此错误:ReferenceError:Camera is not defined

5 个答案:

答案 0 :(得分:13)

如果您通过浏览器为您的应用提供服务,无论您使用cordova关于设备使用的任何内容,都无法正常工作。但是,如果您在模拟器或设备本身中提供应用程序后仍遇到问题。请尝试以下步骤。

首先,请检查cordova插件列表:

转到项目目录类型:cordova plugin lists

  1. 查看cordova-plugin-media-capturecordova-plugin-camera(如果这些不在列表中,则只是错过了插件)。 运行命令 cordova plugin add cordova-plugin-media-capturecordova plugin add cordova-plugin-camera

  2. 如果插件在那里且您仍然没有定义相机问题

    • cordova plugin rm cordova-plugin-camera
    • cordova plugin rm cordova-plugin-media-capture
    • ionic platform rm android
    • ionic platform add android
    • cordova plugin add cordova-plugin-camera
    • cordova plugin add cordova-plugin-media-capture
  3. 以下内容必须出现在index.html

     <script src="lib/ngCordova/dist/ng-cordova.js"></script>
        <script src="cordova.js"></script>
    

答案 1 :(得分:2)

您应确保在中的ng-cordova.js文件之前包含ngCordova/dist/文件(来自cordova.js文件夹)

答案 2 :(得分:0)

确保在控制器声明中也包含ngCordova。 becoz我已经单独保存了我的控制器和app.js文件,并没有在angular.module('xx.controllers',['ionic','ngCordova'])中包含ngCordova。一旦我做到了,我的问题就解决了,我可以在genymotion中运行应用程序

答案 3 :(得分:0)

通过分析Ionic Camera example project来解决这个问题。您已正确完成所有设置,但仍需将其注入控制器,如下所示:

.controller('MyCtrl', function($scope, Camera) {

请注意Camera之前没有美元符号。这应该更明确地记录下来。

此外,如果您还没有它,请添加此工厂:

.factory('Camera', ['$q', function($q) {

  return {
    getPicture: function(options) {
      var q = $q.defer();

      navigator.camera.getPicture(function(result) {
        // Do any magic you need
        q.resolve(result);
      }, function(err) {
        q.reject(err);
      }, options);

      return q.promise;
    }
  }
}])

答案 4 :(得分:0)

只需尝试离子运行浏览器,而不是离子服务