3. 闪光灯控制
可以根据设备是否支持闪光灯,设置不同的闪光灯模式,如关闭、打开、自动等。代码如下:
export async function setPhotoFlashMode(flashMode: number): Promise<void> {
photoSession.setFlashMode(flashMode);
}
4. 变焦功能
支持普通变焦和平滑变焦,通过 setPhotoZoom
和 setPhotoSmoothZoom
方法实现。代码如下:
export function setPhotoZoom(zoom: number): void {
photoSession.setZoomRatio(zoom);
}
export function setPhotoSmoothZoom(zoom: number): void {
photoSession.setSmoothZoom(zoom);
}
5. 动态照片启用
判断设备是否支持动态照片功能,若支持则可以启用动态照片拍摄。代码如下:
export function enableLivePic(isMovingPhoto: boolean): void {
let isSupported: boolean = photoOutPut.isMovingPhotoSupported();
if (isSupported) {
photoOutPut.enableMovingPhoto(isMovingPhoto);
}
}
6. 照片保存与预览
在拍摄完成后,通过设置回调函数将照片保存到媒体库,并可以通过 startAbility
跳转到系统相册预览照片。代码如下:
// Sets the callback function after capture
function setPhotoOutputCb(photoOutput: camera.PhotoOutput): void {
photoOutput.on('photoAssetAvailable',
async (_err: BusinessError, photoAsset: photoAccessHelper.PhotoAsset): Promise<void> => {
let accessHelper: photoAccessHelper.PhotoAccessHelper =
photoAccessHelper.getPhotoAccessHelper(currentContext);
let assetChangeRequest: photoAccessHelper.MediaAssetChangeRequest =
new photoAccessHelper.MediaAssetChangeRequest(photoAsset);
assetChangeRequest.saveCameraPhoto();
await accessHelper.applyChanges(assetChangeRequest);
uri = photoAsset.uri;
AppStorage.setOrCreate('photoUri', await photoAsset.getThumbnail());
});
}
//Use startAbility Jump to System photo
export function previewPhoto(context: Context): void {
let photoContext = context as common.UIAbilityContext;
photoContext.startAbility({
parameters: { uri: uri },
action: 'ohos.want.action.viewData',
bundleName: 'com.huawei.hmos.photos',
abilityName: 'com.huawei.hmos.photos.MainAbility'
})
}
通过以上代码,开发者可以在HarmonyOS Next应用中实现基本的相机功能,包括初始化、拍摄、闪光灯控制、变焦和动态照片等。