我正在尝试使用ionic framework和ngCordova创建一个应用
我已按照说明操作相机
使用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) {