您可以捐助,支持我们的公益事业。

1元 10元 50元





认证码:  验证码,看不清楚?请点击刷新验证码 必填



  求知 文章 文库 Lib 视频 iPerson 课程 认证 咨询 工具 讲座 Model Center   Code  
会员   
   
 
     
   
 订阅
  捐助
Cordova - 使用Cordova开发iOS应用实战2
 
  2333  次浏览      16
 2019-4-25  
 
编辑推荐:
本文来自www.hangge.com ,文章为第二篇主要讲解了添加Cordova控制台插件、调用摄像头拍照,并编辑、获取手机里照片,并编辑等方面介绍。

第一篇为Cordova - 使用Cordova开发iOS应用实战1

添加Cordova控制台插件

前文介绍了通过 Safari 的 Web检查器,可以看到控制台输出的信息。但有时这样调试代码不太方便,如果在Xcode中的命令控制台也能同步打印出调试信息就好了。

这个借助Cordova的 cordova-plugin-console 插件即可实现。

1,给项目添加cordova-plugin-console插件

(1)在“终端”中进入项目文件夹

(2)输入如下命令:

cordova plugin add cordova-plugin-console

2,测试样例

我们将首页 index.html 修改成如下内容,测试各种类型的控制台信息。

<!DOCTYPE html>
<html>
<head>
<title>Pause Example</title>
<meta http-equiv="Content-type" content="text/html; charset=utf-8">
<script type="text/javascript" charset="utf-8" src="cordova.js"></script>
<script type="text/javascript" charset="utf-8">
document.addEventListener ("deviceready", onDeviceReady, false);
function consoleLog(){
console.log ("console.log works well");
}
function consoleError(){
console.error ("console.error works well");
}
function consoleException(){
console.exception ("console.exception works well");
}
function consoleWarn(){
console.warn ("console.warn works well");
}
function consoleInfo(){
console.info ("console.info works well");
}
function consoleDebug(){
console.debug ("console.debug works well");
}
function consoleAssert(){
console.assert ("console.assert works well");
}
function consoleDir(){
console.dir ("console.dir works well");
}
function consoleDirxml(){
console.dirxml ("console.dirxml works well");
}
function consoleTime(){
console.time ("console.time works well");
}
function consoleTimeEnd(){
console.timeEnd ("console.timeEnd works well");
}
function consoleTable(){
console.table ("console.table works well");
}
</script>
< style type="text/css">
button {
width: 200px;height:26px; font-size: 20px;padding: 1px;margin-left: 50px;
}
</style>
</head>
<body>
<br/><button onclick="consoleLog()"> consoleLog</button><br/>
<br/><button onclick="consoleError()"> consoleError</button><br/>
<br/><button onclick="consoleException()"> consoleException</button><br/>
<br/><button onclick="consoleWarn()"> consoleWarn</button><br/>
<br/><button onclick="consoleInfo()"> consoleInfo</button><br/>
<br/> <button onclick="consoleDebug()"> consoleDebug</button><br/>
<br/><button onclick="consoleAssert()"> consoleAssert</button><br/>
<br/> <button onclick="consoleDir()"> consoleDir</button><br/>
<br/> <button onclick="consoleDirxml()"> consoleDirxml</button><br/>
<br/><button onclick="consoleTime()"> consoleTime</button><br/>
<br/><button onclick="consoleTimeEnd()"> consoleTimeEnd</button><br/>
<br/><button onclick="consoleTable()"> consoleTable</button><br/>
</body>
</html>

 

 

运行后页面如下:

3,测试结果

(1)把页面上的按钮都点一遍,看到Safari的Web检查器中打印出了各种控制台信息。

(2)同样在Xcode这边的控制台,同样有调试信息打印出来

调用摄像头拍照,并编辑

使用Cordova可以很方便的通过js代码来使用设备摄像头拍照,只需把camera插件添加进来即可。

一,添加camera插件

首先我们要在“终端”中进入工程所在的目录,然后运行如下命令:

cordova plugin add cordova-plugin-camera

 

可以看到camera相机插件已经成功添加了:

二,调用设备摄像头

1,拍照

下面样例会调用手机摄像头拍照(可以切换前置、后置摄像头),同时拍照完毕后会把照片在页面上显示出来。

原文:Cordova - 使用Cordova开发iOS应用实战4(调用摄像头拍照,并编辑) 原文:Cordova - 使用Cordova开发iOS应用实战4(调用摄像头拍照,并编辑) 原文:Cordova - 使用Cordova开发iOS应用实战4(调用摄像头拍照,并编辑)

原文:Cordova - 使用Cordova开发iOS应用实战4(调用摄像头拍照,并编辑) 原文:Cordova - 使用Cordova开发iOS应用实战4(调用摄像头拍照,并编辑)

<!DOCTYPE html>
<html>
<head>
<title>Capture Photo</title>
<meta http-equiv="Content-type" content="text/html; charset=utf-8">
<script type="text/javascript" charset="utf-8" src="cordova.js"></script>
<script type="text/javascript" charset="utf-8">

var destinationType;

document.addEventListener("deviceready",onDeviceReady,false);

//Cordova加载完成会触发
function onDeviceReady() {
destinationType=navigator.camera.DestinationType;
}

//拍照
function capturePhoto() {
//拍照并获取Base64编码的图像(quality : 存储图像的质量,范围是[0,100])
navigator.camera.getPicture(onPhotoDataSuccess, onFail, { quality: 50,
destinationType: destinationType.DATA_URL }
);
}

//拍照成功
function onPhotoDataSuccess(imageData) {
console.log(imageData);
var smallImage = document.getElementById('smallImage');
smallImage.style.display = 'block';
smallImage.src = "data:image/jpeg;base64," + imageData;
}

//拍照失败
function onFail(message) {
alert('拍照失败: ' + message);
}
</script>
</head>
<body style="padding-top:50px">
<button style="font-size:23px;" onclick="capturePhoto();">拍摄照片</button> <br>
<img style="display:none;width:240px;height:320px;" id="smallImage" src="" />
</body>
</html>

2,拍照并进行编辑

拍摄照片后我们还可以进行简单的编辑,只要把 allowEdit 参数设为 true 即可。

下面样例可以看到,拍照完毕后会先进入编辑界面。上面有个正方形进行框,通过拖拽、缩放照片可以将其裁剪为正方形的图片(这个对需要使用正方形图片的场合比较有用,比如用户头像)。

原文:Cordova - 使用Cordova开发iOS应用实战4(调用摄像头拍照,并编辑) 原文:Cordova - 使用Cordova开发iOS应用实战4(调用摄像头拍照,并编辑) 原文:Cordova - 使用Cordova开发iOS应用实战4(调用摄像头拍照,并编辑)

<!DOCTYPE html>
<html>
<head>
<title>Capture Photo</title>
<meta http-equiv="Content-type" content="text/html; charset=utf-8">
<script type="text/javascript" charset="utf-8" src="cordova.js"></script>
<script type="text/javascript" charset="utf-8">

var destinationType;

document.addEventListener("deviceready",onDeviceReady,false);

//Cordova加载完成会触发
function onDeviceReady() {
destinationType=navigator.camera.DestinationType;
}

//拍照并编辑
function capturePhotoEdit() {
//拍照并获取Base64编码的图像(quality : 存储图像的质量,范围是[0,100])
//allowEdit: true 拍照完毕后允许简单编辑
navigator.camera.getPicture(onPhotoDataSuccess, onFail, { quality: 20,
allowEdit: true,
destinationType: destinationType.DATA_URL });
}

//拍照成功
function onPhotoDataSuccess(imageData) {
console.log(imageData);
var smallImage = document.getElementById('smallImage');
smallImage.style.display = 'block';
smallImage.src = "data:image/jpeg;base64," + imageData;
}

//拍照失败
function onFail(message) {
alert('拍照失败: ' + message);
}
</script>
</head>
<body style="padding-top:50px">
<button style="font-size:23px;" onclick="capturePhotoEdit();">拍照并编辑</button> <br>
<img style="display:none;width:240px;height:240px;" id="smallImage" src="" />
</body>
</html>

三、摄像头插件的常用参数

1,correctOrientation

有时我们发现拍摄后,照片显示出来的方向不对。可以将 correctOrientation 设置成 true,这样拍摄后插件会自动旋转照片,保证方向正确。

navigator.camera.getPicture(onPhotoDataSuccess, onFail, { quality: 50,
destinationType: destinationType.DATA_URL
correctOrientation: true}
);

 

2,saveToPhotoAlbum

设置成 true。拍照后会将照片自动保存到设备的系统相册中。

navigator.camera.getPicture(onPhotoDataSuccess, onFail, { quality: 50,
destinationType: destinationType.DATA_URL
saveToPhotoAlbum: true}
);

 

 

3,cameraDirection

拍摄时默认使用哪个摄像头。默认情况下是使用后置摄像头(Camera.Direction.BACK)。我们可以改成使用前置摄像头(Camera.Direction.FRONT)。

navigator.camera.getPicture(onPhotoDataSuccess, onFail, { quality: 50,
destinationType: destinationType.DATA_URL
cameraDirection: Camera.Direction.FRONT}
);

获取手机里照片,并编辑

使用Cordova可以很方便的通过js代码读取系统相簿里面的照片,同使用设备摄像头拍照一样,同样需要先添加camera插件。

一,添加camera插件

首先我们要在“终端”中进入工程所在的目录,然后运行如下命令:

cordova plugin add cordova-plugin-camera

 

可以看到camera相机插件已经成功添加了:

二,获取照片

我们可以选择是从“照片库(时刻)”中读取图片,或者从“相簿”中读取图片。

1,从“相簿”中获取照片

 

<!DOCTYPE html>
<html>
<head>
<title>Capture Photo</title>
<meta http-equiv="Content-type" content="text/html; charset=utf-8">
<script type="text/javascript" charset="utf-8" src="cordova.js"></script>
<script type="text/javascript" charset="utf-8">
var pictureSource;
var destinationType;

document.addEventListener("deviceready",onDeviceReady,false);

//Cordova加载完成会触发
function onDeviceReady() {
pictureSource=navigator.camera.PictureSourceType;
destinationType=navigator.camera.DestinationType;
}

//获取照片
function getPhoto(source) {
//quality : 图像的质量,范围是[0,100]
navigator.camera.getPicture(onPhotoURISuccess, onFail, { quality: 50,
destinationType: destinationType.FILE_URI,
sourceType: source });
}

//获取照片成功
function onPhotoURISuccess(imageURI) {
//打印出照片路径
console.log(imageURI);
var largeImage = document.getElementById('largeImage');
largeImage.style.display = 'block';
largeImage.src = imageURI;
}

//获取照片是吧
function onFail(message) {
alert('获取失败: ' + message);
}
</script>
</head>
<body style="padding-top:50px">
<button style="font-size:23px;" onclick="getPhoto(pictureSource.PHOTOLIBRARY);">
从“相簿”中获取照片
</button> <br>
<img style="display:none;" id="largeImage" src="" />
</body>
</html>

 

2,从“照片库(时刻)”中获取照片

<!DOCTYPE html>
<html>
<head>
<title>Capture Photo</title>
<meta http-equiv="Content-type" content="text/html; charset=utf-8">
<script type="text/javascript" charset="utf-8" src="cordova.js"></script>
<script type="text/javascript" charset="utf-8">
var pictureSource;
var destinationType;

document.addEventListener("deviceready",onDeviceReady,false);

//Cordova加载完成会触发
function onDeviceReady() {
pictureSource=navigator.camera.PictureSourceType;
destinationType=navigator.camera.DestinationType;
}

//获取照片
function getPhoto(source) {
//quality : 图像的质量,范围是[0,100]
navigator.camera.getPicture(onPhotoURISuccess, onFail, { quality: 50,
destinationType: destinationType.FILE_URI,
sourceType: source });
}

//获取照片成功
function onPhotoURISuccess(imageURI) {
//打印出照片路径
console.log(imageURI);
var largeImage = document.getElementById('largeImage');
largeImage.style.display = 'block';
largeImage.src = imageURI;
}

//获取照片是吧
function onFail(message) {
alert('获取失败: ' + message);
}
</script>
</head>
<body style="padding-top:50px">
<button style="font-size:23px;" onclick="getPhoto(pictureSource.SAVEDPHOTOALBUM);">
从“时刻”中获取照片
</button> <br>
<img style="display:none;" id="largeImage" src="" />
</body>
</html>

 

 

 

   
2333 次浏览       16
相关文章

深度解析:清理烂代码
如何编写出拥抱变化的代码
重构-使代码更简洁优美
团队项目开发"编码规范"系列文章
相关文档

重构-改善既有代码的设计
软件重构v2
代码整洁之道
高质量编程规范
相关课程

基于HTML5客户端、Web端的应用开发
HTML 5+CSS 开发
嵌入式C高质量编程
C++高级编程