我第一次尝试使用Cordova本机插件.我开始使用相机和文档中提供的示例代码.然而,这是失败的,并且navigator.camera未定义.
我已经包含了下面的代码.
<div data-role="page" id="CameraPage">
<script type="text/javascript" charset="utf-8">
var pictureSource; // picture source
var destinationType; // sets the format of returned value
// Wait for device API libraries to load
//
document.addEventListener("deviceready",onDeviceReady,false);
// device APIs are available
//
function onDeviceReady() {
pictureSource=navigator.camera.PictureSourceType;
destinationType=navigator.camera.DestinationType;
}
// Called when a photo is successfully retrieved
//
function onPhotoDataSuccess(imageData) {
alert("Photo Data Success");
// Uncomment to view the base64-encoded image data
// console.log(imageData);
// Get image handle
//
var smallImage = document.getElementById('smallImage');
// Unhide image elements
//
smallImage.style.display = 'block';
// Show the captured photo
// The inline CSS rules are used to resize the image
//
smallImage.src = "data:image/jpeg;base64," + imageData;
}
// A button will call this function
//
function capturePhoto() {
alert("function is called");
if(_.isUndefined(navigator.camera)){
alert("Camera is not defined");
}else{
alert("WTF?!");
}
// Take picture using device camera and retrieve image as base64-encoded string
navigator.camera.getPicture(onPhotoDataSuccess, onFail, { quality: 50,
destinationType: destinationType.DATA_URL });
}
// Called if something bad happens.
//
function onFail(message) {
alert('Failed because: ' + message);
}
</script>
<button onclick="capturePhoto();">Capture Photo</button> <br>
<img style="display:none;width:60px;height:60px;" id="smallImage" src="" />
<img style="display:none;" id="largeImage" src="" />
Run Code Online (Sandbox Code Playgroud)
我根据CLI说明安装了摄像头插件
cordova plugin add https://git-wip-us.apache.org/repos/asf/cordova-plugin-camera.git
Run Code Online (Sandbox Code Playgroud)
我还添加了cordova.js文件.
<script type="text/javascript" charset="utf-8" src="js/cordova-js/lib/cordova.js"></script>
Run Code Online (Sandbox Code Playgroud)
小智 10
你在哪里测试代码?
我不知道你是否还需要anwser.但我认为它可以帮助某人.我运行你的代码,它100%工作.我已经在Android的模拟器中使用模拟相机进行了测试.我认为你忘记了使用权限.
<uses-permission android:name="android.permission.CAMERA" />
<uses-feature android:name="android.hardware.camera" />
<uses-feature android:name="android.hardware.camera.autofocus" />
Run Code Online (Sandbox Code Playgroud)
我在这里做了一个例子https://github.com/paulorbpacheco/CameraTest-Cordova.git
我希望这可以帮助你......
问候
这有点旧了,但我希望为以后可能出现的其他人提供见解......
我遇到的问题是由于我曾经在我的系统上安装了旧版本的 cordova npm,然后又安装了phonegap。
Cordova 是phonegap 的依赖项,因此存在必要的cordova 版本,但是当我运行插件安装时:
cordova plugin add https://git-wip-us.apache.org/repos/asf/cordova-plugin-camera.git
Run Code Online (Sandbox Code Playgroud)
系统默认使用旧版本的 cordova,因此无法获得正确版本的插件。
最近,当我将 npmphonegap 包从 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 的官方文档)
sudo npm install -g phonegap
Run Code Online (Sandbox Code Playgroud)
我的短期解决方案最终是将使用我需要的版本的旧项目中所需的插件目录复制到恰好在同一版本上运行的其他项目中。我的下一步将是使用 nvm 进行测试,看看我是否能够在每个项目中使用这种方式多次安装 PhoneGap,而不是始终使用不断变化的全局版本。
| 归档时间: |
|
| 查看次数: |
13716 次 |
| 最近记录: |