鸿蒙应用开发中cameraPicker唤起相机拍照实践
从鸿蒙API 12版本开始,唤起相机拍照或拍视频有一种简单的实现方式,即通过CameraKit组件中的cameraPicker来唤起相机。首选需要声明一个cameraPicker.PickerProfile类型的配置实例,可以只指定一个cameraPosition参数,这个参数代表前置镜头或后置镜头,是一个枚举类型,枚举项如下:
camera.CameraPosition.CAMERA_POSITION_UNSPECIFIED:不指定前置或后置镜头 camera.CameraPosition.CAMERA_POSITION_BACK:指定后置镜头 camera.CameraPosition.CAMERA_POSITION_FRONT:指定前置镜头 camera.CameraPosition.CAMERA_POSITION_FOLD_INNER:指定折叠屏内镜头
声明一个cameraPicker.PickerProfile类型的配置实例代码如下:
const pickerConfig: cameraPicker.PickerProfile = { cameraPosition: camera.CameraPosition.CAMERA_POSITION_UNSPECIFIED }
配置实例声明好以后,只需要调用cameraPicker的pick方法即可实现唤起相机拍照或拍视频了。pick方法的第二个参数声明可以拍照片还是拍视频,如果既要拍照又要拍视频,同时声明两个类型即可。示例代码如下:
const pickResult = await cameraPicker.pick(AppContextInstance.context, [cameraPicker.PickerMediaType.PHOTO, cameraPicker.PickerMediaType.VIDEO], pickerConfig)
在页面加一个拍照测试按钮,点击按钮唤起相机拍照,示例代码如下:
build() { Column() { Button('拍照') .onClick(() => { this.openCamera() }) } }
如果正常完成拍照,pickResult接收到的数据格式如下:
{ "resultCode": 0, "resultUri": "file://media/Photo/73/IMG_1749397183_058/IMG_20250608_233803.jpg", "mediaType": "photo" }
如果未能正常完成拍摄,pickResult接收到的数据格式如下:
{ "resultCode": -1, "resultUri": "", "mediaType": "photo" }
由此可见,resultCode为-1表示未正常完成拍摄,resultCode为0时表示正常完成拍摄,并返回照片的文件绝对路径。