Phonegap Cordova 3.0.0 navigator.camera未定义

Phonegap Cordova 3.0.0 navigator.camera未定义,cordova,cordova-3,Cordova,Cordova 3,我第一次尝试使用Cordova原生插件。我从相机和文档中提供的示例代码开始。但是,此操作失败,并且未定义导航器.camera 我已经包括了下面的代码 var pictureSource;//图像源 var destinationType;//设置返回值的格式 //等待加载设备API库 // 文件。添加的监听器(“deviceready”,OnDeviceraddy,false); //设备API可用 // 函数ondevicerady(){ pictureSource=navigator.ca

我第一次尝试使用Cordova原生插件。我从相机和文档中提供的示例代码开始。但是,此操作失败,并且未定义
导航器.camera

我已经包括了下面的代码


var pictureSource;//图像源
var destinationType;//设置返回值的格式
//等待加载设备API库
//
文件。添加的监听器(“deviceready”,OnDeviceraddy,false);
//设备API可用
//
函数ondevicerady(){
pictureSource=navigator.camera.PictureSourceType;
destinationType=navigator.camera.destinationType;
}
//成功检索照片时调用
//
函数onPhotoDataSuccess(imageData){
警报(“照片数据成功”);
//取消注释以查看base64编码的图像数据
//控制台日志(imageData);
//获取图像句柄
//
var smallImage=document.getElementById('smallImage');
//取消隐藏图像元素
//
smallImage.style.display='block';
//显示捕获的照片
//内联CSS规则用于调整图像大小
//
smallImage.src=“数据:图像/jpeg;base64,”+imageData;
}
//一个按钮将调用此函数
//
函数capturePhoto(){
警报(“调用函数”);
如果(uu.isUndefined(navigator.camera)){
警报(“摄像机未定义”);
}否则{
警报(“WTF?!”);
}
//使用设备摄像头拍照,并将图像作为base64编码字符串检索
navigator.camera.getPicture(onPhotoDataSuccess,onFail,{质量:50,
destinationType:destinationType.DATA_URL});
}
//如果有什么不好的事情发生了就打电话。
//
函数onFail(消息){
警报('失败原因:'+消息);
}
拍摄照片

我根据CLI说明安装了摄像头插件

cordova plugin add https://git-wip-us.apache.org/repos/asf/cordova-plugin-camera.git
我还添加了cordova.js文件


您好,您可以尝试使用
Icenium
,然后创建一个
Phonegap
项目,在该项目中,已经完成了带有摄像头API的示例应用程序,您可以在那里找到代码


希望这有帮助

您在哪里测试代码

我不知道你是否还需要安瑟尔。但我认为它可以帮助一些人。我运行你的代码,它的工作100%。 我已经在Android的模拟器上用模拟摄像机进行了测试。我想你忘了使用权限了

<uses-permission android:name="android.permission.CAMERA" />
<uses-feature android:name="android.hardware.camera" />
<uses-feature android:name="android.hardware.camera.autofocus" />

我在这里举了个例子

我希望这能帮助你


关于

这有点老了,但我希望能为以后可能出现的其他人提供见解

我遇到的问题是因为我曾经在我的系统上安装过旧的cordova npm,后来又安装了phonegap

Cordova是phonegap的依赖项,因此提供了Cordova的必要版本,但当我运行插件安装时:

cordova plugin add https://git-wip-us.apache.org/repos/asf/cordova-plugin-camera.git
系统默认使用旧版本的cordova,因此无法获得正确版本的插件

最近,当我将我的npm phonegap软件包从3.0.0升级到3.1.0时,我再次想起了这个问题。插件又一次发生了变化,不能向后兼容。在3.0.0的情况下,PhoneGap需要一个插件目录

org.apache.cordova.core.camera org.apache.cordova.core.X

在最新版本3.1.0中,核心名称空间被删除,现在看起来是这样的

org.apache.cordova.camera org.apache.cordova.X

在正常使用场景中,我不认为人们每天都会遇到这种情况。我猜大多数项目都在生成中,开发人员正在添加他们需要的插件,并坚持使用PhoneGap的特定版本,直到他们决定升级项目为止。在我看来,当开发者开始同时处理多个PhoneGap项目时,这就成了一个问题;我这里的案子。我升级到一个新项目的新版本,然后需要向旧项目添加插件

到目前为止,我一直在使用PhoneGap的全局安装(根据PhoneGap.com上的官方文档)


我的短期解决方案是将一个旧项目中所需的插件目录从我需要的版本复制到我的另一个项目中,该项目恰好运行在同一版本上。我的下一步将是使用nvm进行测试,看看我是否能够以这种方式在每个项目中使用多个PhoneGap安装,而不是使用一个总是不断变化的全局版本

由于cordova未正确构建而产生未定义问题,因此请按照以下步骤解决navigator.camera问题

步骤1:获取最新的phonegap zip(),目前最新版本是2.9.1,包含cordova.2.9.1.js,但没有cordova.2.9.1.jar(您需要生成jar文件,请遵循步骤2)

步骤2:然后需要生成cordova2.9.1.jar,请按照下面的链接生成.jar文件

请记住,在“EclipseIDE”中的android项目中必须有适当的cordova.2.9.1.js及其相应的cordova.2.9.1.jar

第3步:别忘了在config.xml中添加摄像头权限(如果不起作用,请按照config.xml操作)


天光石
我是摇滚乐手。
这个人让你大吃一惊。
sudo npm install -g phonegap
function onDeviceReady() {
  try {
      pictureSource = navigator.camera.PictureSourceType;
      destinationType = navigator.camera.DestinationType;
  } catch (e) {

  }
}