我正在尝试使用ionic frameworkngCordova创建一个应用

我已按照说明操作相机


使用Bower安装ngCordova
在ngCordova.js之前的脚本标签中包含ngCordova.js
使用cordova plugin add org.apache.cordova.camera安装必要的插件


我的主控制器中包含来自文档的示例代码:

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


然后,我使用ionic平台将android添加为平台,然后添加android,然后在LG G2手机通过USB连接时使用“ ionic run”在手机上运行该应用程序。问题是,它不起作用。我收到以下错误:

ReferenceError: Camera is not defined
at new <anonymous> (file:///android_asset/www/js/app.js:36:45)
at invoke (file:///android_asset/www/lib/ionic/js/ionic.bundle.js:11591:17)
at Object.instantiate (file:///android_asset/www/lib/ionic/js/ionic.bundle.js:11602:23)
at file:///android_asset/www/lib/ionic/js/ionic.bundle.js:14906:28
at file:///android_asset/www/lib/ionic/js/ionic.bundle.js:14295:34
at forEach (file:///android_asset/www/lib/ionic/js/ionic.bundle.js:7957:20)
at nodeLinkFn (file:///android_asset/www/lib/ionic/js/ionic.bundle.js:14282:11)
at compositeLinkFn (file:///android_asset/www/lib/ionic/js/ionic.bundle.js:13730:13)
at compositeLinkFn (file:///android_asset/www/lib/ionic/js/ionic.bundle.js:13733:13)
at publicLinkFn (file:///android_asset/www/lib/ionic/js/ionic.bundle.js:13626:30)


为了弄清楚整个ngCordova是不是有问题,还是只是相机功能有问题,我还尝试通过相同的步骤并使用手电筒示例代码来使手电筒工作:

var isAvailable = $ cordovaFlashlight.available()

$ cordovaFlashlight.switchOn()
    。然后(
      功能(成功){/ *成功/},
      函数(错误){/错误* /});

当我尝试运行此命令时,出现类似的错误。

TypeError: Cannot read property 'flashlight' of undefined
at Object.available (file:///android_asset/www/lib/ngCordova/dist/ng-cordova.js:1243:23)
at new <anonymous> (file:///android_asset/www/js/app.js:36:42)
at invoke (file:///android_asset/www/lib/ionic/js/ionic.bundle.js:11591:17)
at Object.instantiate (file:///android_asset/www/lib/ionic/js/ionic.bundle.js:11602:23)
at file:///android_asset/www/lib/ionic/js/ionic.bundle.js:14906:28
at file:///android_asset/www/lib/ionic/js/ionic.bundle.js:14295:34
at forEach (file:///android_asset/www/lib/ionic/js/ionic.bundle.js:7957:20)
at nodeLinkFn (file:///android_asset/www/lib/ionic/js/ionic.bundle.js:14282:11)
at compositeLinkFn (file:///android_asset/www/lib/ionic/js/ionic.bundle.js:13730:13)
at compositeLinkFn (file:///android_asset/www/lib/ionic/js/ionic.bundle.js:13733:13)


有人知道会发生什么吗?我觉得我正确地遵循了文档中概述的步骤。

(作为健全性检查,我尝试记录window.cordova的值以检查它是否确实存在。它很有趣,但是cordova.plugins属性是一个仅包含属性“ Keyboard”的对象。它也具有对相机和手电筒的某种引用。也许这与问题有关?)

最佳答案

您必须像下面的示例中对cordovaFlashlight插件的引用


  module.controller('MyController', function($scope, $cordovaFlashlight) {

10-07 20:40