Android 科尔多瓦照相机-爱奥尼亚
我一直在寻找一个解决方案,将近两天了。 我正在尝试使用ngCordova摄像头插件 我正在使用离子约曼框架和AngularJS 我所做的是: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
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