首页 > 数据库 > 数据库开发技术 > HarmonyOS NEXT实战:唤起相机
##HarmonyOS Next实战##HarmonyOS SDK应用服务##教育##
目标:可以唤起相机拍照和录像,并展示拍摄的图片和视频。
应用可调用CameraPicker拍摄照片或录制视频,无需申请相机权限。
cameraPicker.pick接口
pick(context: Context, mediaTypes: Array<PickerMediaType>, pickerProfile: PickerProfile): Promise<PickerResult>
拉起相机选择器,根据媒体类型进入相应的模式。操作结束通过Promise形式获取结果。
PickerProfile:相机选择器的配置信息。 PickerProfile属性
说明
PickerResult:相机选择器的处理结果。 PickerResult属性
实战:CameraPickerPage
import { camera, cameraPicker as picker } from '@kit.CameraKit'
import { fileIo, fileUri } from '@kit.CoreFileKit'
@Entry
@Component
struct CameraPickerPage {
@State imgSrc: string = '';
@State videoSrc: string = '';
@State isShowImage: boolean = false
build() {
Column({ space: 10 }) {
Text('CameraPicker Demo')
Row({ space: 10 }){
Button('拍照')
.onClick(async () => {
let pathDir = getContext().filesDir;
let fileName = `${new Date().getTime()}`
let filePath = pathDir + `/${fileName}.tmp`
fileIo.createRandomAccessFileSync(filePath, fileIo.OpenMode.CREATE);
let uri = fileUri.getUriFromPath(filePath);
let pickerProfile: picker.PickerProfile = {
cameraPosition: camera.CameraPosition.CAMERA_POSITION_BACK,
saveUri: uri
};
let result: picker.PickerResult =
await picker.pick(getContext(), [picker.PickerMediaType.PHOTO],
pickerProfile);
console.info(`picker resultCode: ${result.resultCode},resultUri: ${result.resultUri},mediaType: ${result.mediaType}`);
if (result.resultCode == 0) {
if (result.mediaType === picker.PickerMediaType.PHOTO) {
this.imgSrc = result.resultUri;
this.isShowImage = true
} else {
this.videoSrc = result.resultUri;
}
}
})
Button('录视频')
.onClick(async () => {
let pathDir = getContext().filesDir;
let fileName = `${new Date().getTime()}`
let filePath = pathDir + `/${fileName}.tmp`
fileIo.createRandomAccessFileSync(filePath, fileIo.OpenMode.CREATE);
let uri = fileUri.getUriFromPath(filePath);
let pickerProfile: picker.PickerProfile = {
cameraPosition: camera.CameraPosition.CAMERA_POSITION_BACK,
saveUri: uri
};
let result: picker.PickerResult =
await picker.pick(getContext(), [ picker.PickerMediaType.VIDEO],
pickerProfile);
console.info(`picker resultCode: ${result.resultCode},resultUri: ${result.resultUri},mediaType: ${result.mediaType}`);
if (result.resultCode == 0) {
if (result.mediaType === picker.PickerMediaType.PHOTO) {
this.imgSrc = result.resultUri;
} else {
this.videoSrc = result.resultUri;
this.isShowImage = false
}
}
})
}
if (this.imgSrc != '' || this.videoSrc != '') {
if (this.isShowImage) {
Image(this.imgSrc).width(200).height(200).backgroundColor(Color.Black).margin(5);
} else {
Video({ src: this.videoSrc }).width(200).height(200).autoPlay(true);
}
}
}
.height('100%')
.width('100%')
}
}
原文作者:;如有侵权,请联系管理员删除。