Android 科尔多瓦照相机-爱奥尼亚

Android 科尔多瓦照相机-爱奥尼亚,android,angularjs,cordova,yeoman,ionic-framework,Android,Angularjs,Cordova,Yeoman,Ionic Framework,我一直在寻找一个解决方案,将近两天了。 我正在尝试使用ngCordova摄像头插件 我正在使用离子约曼框架和AngularJS 我所做的是: bower install --save ngCordova. 在我的应用程序模块中添加了ngCordova。 已安装cordova摄像头插件: cordova plugin add org.apache.cordova.camera. 我的控制器: .controller('profileCtrl', function($scope, myServi

我一直在寻找一个解决方案,将近两天了。 我正在尝试使用ngCordova摄像头插件

我正在使用离子约曼框架和AngularJS

我所做的是:

bower install --save ngCordova.
在我的
应用程序模块中添加了
ngCordova
。 已安装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:
摄像机未定义
你应该确保在html中的
cordova.js
文件之前包含
ng cordova.js
文件(来自
ngCordova/dist/
文件夹)(来自
ngCordova/dist/
文件夹)在html中的
cordova.js
文件之前。

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

确保在控制器声明中也包含ngCordova。因为我将控制器和app.js文件分开保存,并且没有将ngCordova包含在angular.module中('xx.controllers',['ionic','ngCordova'))。一旦我这样做了,我的问题就解决了,我可以在genymotion中运行应用程序。我只是通过分析解决了这个问题。您正确地完成了所有设置,但仍然需要将其插入控制器,如下所示:

.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;
    }
  }
}])

只是通过分析解决了这个问题。您正确地完成了所有设置,但仍需要将其注入控制器,如下所示:

.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;
    }
  }
}])

如果您通过浏览器为应用程序提供服务,无论您在设备使用方面使用
cordova
,都不起作用。但是,如果您在emulator或设备本身中为应用程序提供服务后仍有问题,请尝试以下步骤

首先,检查cordova插件列表:

转到项目目录类型:
cordova插件列表

  • 有关
    cordova插件媒体捕获
    cordova插件照相机
    (如果这些不在列表中,您只是缺少插件)。 运行命令
    cordova插件添加cordova插件媒体捕获
    cordova插件添加cordova插件摄像头

  • 如果插件在那里,你仍然有相机的问题是没有定义

    • cordova插件rm cordova插件摄像头
    • cordova插件rm cordova插件媒体捕获
    • ionic平台rm android
    • 爱奥尼亚平台添加android
    • cordova插件添加cordova插件摄像头
    • cordova插件添加cordova插件媒体捕获
  • 您的index.html中必须存在以下内容

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

    如果您通过浏览器为应用程序提供服务,无论您在设备使用方面使用
    cordova
    ,都不会起作用。但是,如果您在emulator或设备本身中为应用程序提供服务后仍有问题,请尝试以下步骤

    首先,检查cordova插件列表:

    转到项目目录类型:
    cordova插件列表

  • 有关
    cordova插件媒体捕获
    cordova插件照相机
    (如果这些不在列表中,您只是缺少插件)。 运行命令
    cordova插件添加cordova插件媒体捕获
    cordova插件添加cordova插件摄像头

  • 如果插件在那里,你仍然有相机的问题是没有定义

    • cordova插件rm cordova插件摄像头
    • cordova插件rm cordova插件媒体捕获
    • ionic平台rm android
    • 爱奥尼亚平台添加android
    • cordova插件添加cordova插件摄像头
    • cordova插件添加cordova插件媒体捕获
  • 您的index.html中必须存在以下内容

     <script src="lib/ngCordova/dist/ng-cordova.js"></script>
        <script src="cordova.js"></script>
    
    
    
    只需尝试爱奥尼亚跑步浏览器而不是爱奥尼亚服务

    只需尝试爱奥尼亚跑步浏览器而不是爱奥尼亚服务

    当您在浏览器上时,cordova的功能不可用,仅在部署的应用程序或模拟器上。当您在浏览器上时,cordova不可用,仅在部署的应用程序或模拟器中。不,这称为FactoryNope,这称为Factory