在开发移动应用时,访问手机的相机功能是一个常见的需求。Ionic 2框架提供了一种简单的方式来实现这一功能。本文将介绍如何使用Ionic 2和Ionic Native库来访问和使用手机相机。
首先,需要创建一个新的Ionic 2应用。使用空白模板来生成应用:
ionic start sayCheese blank --v2 --id com.techiediaries.sayCheese
确保添加了--v2
参数,这样Ionic CLI就会基于Ionic 2而不是Ionic 1来生成应用。
进入应用项目目录,并启动应用:
cd sayCheese
ionic serve
如果一切顺利,应该能在默认浏览器中看到空白应用。
由于浏览器不支持Cordova插件,需要将手机通过USB连接到电脑上,并执行以下命令:
ionic run android
如果使用的是Mac,也可以选择为iOS开发应用,而不是Android:
ionic run ios
接下来,需要添加目标平台:
ionic platform add android
如果是第一次使用Cordova,请确保已经通过npm安装了它:
npm install -g cordova
添加了平台之后,需要添加相机插件:
ionic plugin add cordova-plugin-camera
现在,让开始编写代码来访问相机并拍照。打开位于app/src/pages/home
目录下的home.ts
文件,并编写以下代码来使用Ionic Native访问相机:
import { Component } from '@angular/core';
import { NavController } from 'ionic-angular';
import { Camera } from '@ionic-native/camera';
@Component({
selector: 'page-home',
templateUrl: 'home.html'
})
export class HomePage {
public myImage: string;
constructor(public navCtrl: NavController, public ngZone: NgZone) {
this.myImage = 'https://placehold.it/150x150';
}
public takePic() {
Camera.getPicture({
quality: 75,
destinationType: Camera.DestinationType.DATA_URL,
sourceType: Camera.PictureSourceType.CAMERA,
allowEdit: false,
encodingType: Camera.EncodingType.JPEG,
targetWidth: 300,
targetHeight: 300,
saveToPhotoAlbum: true
}).then((imageData) => {
this.myImage = 'data:image/jpeg;base64,' + imageData;
}, (err) => {
alert(err);
});
}
}
首先,从@ionic-native/camera
导入了Camera
类。然后,声明了一个名为myImage
的字符串属性,它将保存图片的URL。在构造函数中,使用placehold.it
初始化myImage
。
接下来,添加了一个名为takePic
的公共方法,它包含了使用Camera.getPicture
拍照的逻辑。这个方法接受一个选项对象,定义了要拍摄的图片的属性和其他相机设置。最重要的是,告诉相机以base64
格式返回图像数据,使用destinationType: Camera.DestinationType.DATA_URL
。
这个方法返回一个承诺,如果操作成功,将图像数据(base64
)分配给myImage
,否则只显示错误。
现在,只需在终端中输入以下命令:
ionic run android