diff --git a/README.md b/README.md index 2f34d8c47a239306cd4cb02bed02c48b25c885f3..0e551a08f829ecb1cdff651de7fc6706d43df8dd 100644 --- a/README.md +++ b/README.md @@ -49,7 +49,7 @@ ### 具体实现 * 相机功能接口实现在CameraService.ets,源码参考:[CameraService.ets](entry/src/main/ets/mode/CameraService.ets) - * 在CameraService的initCamera函数里完成一个相机生命周期初始化的过程,包括调用getCameraMananger获取CameraMananger,调用getSupportedCameras获取支持的camera设备,调用getSupportedOutputCapability获取支持的camera设备能力集,调用createPreviewOutput创建预览输出,调用createCameraInput创建相机输入,调用CameraInput的open打开相机输入,调用onCameraStatusChange创建CameraManager注册回调,最后调用sessionFlowFn创建并开启Session。 + * 在CameraService的initCamera函数里完成一个相机生命周期初始化的过程,包括调用getCameraManager获取CameraManager,调用getSupportedCameras获取支持的camera设备,调用getSupportedOutputCapability获取支持的camera设备能力集,调用createPreviewOutput创建预览输出,调用createCameraInput创建相机输入,调用CameraInput的open打开相机输入,调用onCameraStatusChange创建CameraManager注册回调,最后调用sessionFlowFn创建并开启Session。 * 其中sessionFlowFn是一个创建session并开启预览的动作,主要流程包括:调用createSession创建Session,调用beginConfig开始配置会话,调用addInput把CameraInput加入到会话,调用addPreviewOutput把previewOutput加入到会话,调用commitConfig提交配置信息,调用start开始会话工作。 * 在CameraService的releaseCamera函数里完成对相机生命周期释放的过程,调用output的release方法释放流,调用CameraInput的close方法关闭相机,再调用session的release释放当前会话。 @@ -61,7 +61,7 @@ * onCaptureSessionErrorChange:session出现异常时触发回调 * 相机预览、拍照,录像功能实现调用侧位于Index.ets,ModeComponent.ets中,源码参考:[Index.ets](entry/src/main/ets/pages/Index.ets),[ModeComponent.ets](entry/src/main/ets/views/ModeComponent.ets) - * 预览:开启预览位于Index.ets下的XComponent组件的onLoad接口中,其中调用CameraService.initCamera方法,将预览的surfaceId,摄像头设备作为入参啊传下去,完成开启相机的操作,开启预览。 + * 预览:开启预览位于Index.ets下的XComponent组件的onLoad接口中,其中调用CameraService.initCamera方法,将预览的surfaceId,摄像头设备作为入参传下去,完成开启相机的操作,开启预览。 * 拍照:开启拍照位于ModeComponent.ets下的拍照按钮的onClick接口,调用CameraManager对象下的takePicture方法开启拍照操作。 * 相机变焦功能实现调用侧位于SlideComponent.ets中,源码参考:[SlideComponent.ets](entry/src/main/ets/views/SlideComponent.ets) diff --git a/entry/src/main/ets/mode/CameraService.ets b/entry/src/main/ets/mode/CameraService.ets index 78317569f84886f19a8268d803c35949a9e03754..c84e4f7d5f767d2a4960658af86f5a258658d85c 100644 --- a/entry/src/main/ets/mode/CameraService.ets +++ b/entry/src/main/ets/mode/CameraService.ets @@ -584,7 +584,7 @@ class CameraService { ${captureEndInfo.captureId}, frameCount: ${captureEndInfo.frameCount}`); }); photoOutput.on('error', (data: BusinessError): void => { - Logger.info(TAG, `photoOutPut data: ${JSON.stringify(data)}`); + Logger.error(TAG, `photoOutPut data: ${JSON.stringify(data)}`); }); photoOutput.on('photoAssetAvailable', (err: BusinessError, photoAsset: photoAccessHelper.PhotoAsset) => { Logger.info(TAG, 'photoAssetAvailable begin'); @@ -699,8 +699,13 @@ class CameraService { let filesDir = uiContext?.getHostContext()!.filesDir; let filePath = filesDir + `/${Date.now()}.mp4`; AppStorage.setOrCreate('filePath', filePath); - let file: fileIo.File = fileIo.openSync(filePath, fileIo.OpenMode.READ_WRITE | fileIo.OpenMode.CREATE); - return file.fd; + try { + let file: fileIo.File = fileIo.openSync(filePath, fileIo.OpenMode.READ_WRITE | fileIo.OpenMode.CREATE); + return file.fd; + } catch (error) { + Logger.error(TAG, `Failed in openSync, error code: ${error.code}`); + return 0; + } } async prepareAVRecorder(): Promise { diff --git a/entry/src/main/ets/pages/EditPage.ets b/entry/src/main/ets/pages/EditPage.ets index 8cd2886521ded8e302849e7191886878523223b7..900ab22d5c78cc1f85fb5f6dacc34c4a9edaedbe 100644 --- a/entry/src/main/ets/pages/EditPage.ets +++ b/entry/src/main/ets/pages/EditPage.ets @@ -15,7 +15,6 @@ import { image } from '@kit.ImageKit'; import { photoAccessHelper } from '@kit.MediaLibraryKit'; -import { router } from '@kit.ArkUI'; import { BusinessError } from '@kit.BasicServicesKit'; import { camera } from '@kit.CameraKit'; import { fileIo } from '@kit.CoreFileKit'; diff --git a/entry/src/main/ets/pages/Index.ets b/entry/src/main/ets/pages/Index.ets index 294ed25caa6f5aa5d68267cf86ea12e6558a968b..e09156e4461d1af846e345dcecafa1213f7902b8 100644 --- a/entry/src/main/ets/pages/Index.ets +++ b/entry/src/main/ets/pages/Index.ets @@ -95,7 +95,7 @@ struct Index { }, color: Color.Black }) - // The width and height of the surface are opposite to those of the Xcomponent. + // The width and height of the surface are opposite to those of the XComponent. .width(this.getUIContext().px2vp(Constants.X_COMPONENT_SURFACE_HEIGHT)) .height(this.getUIContext().px2vp(Constants.X_COMPONENT_SURFACE_WIDTH)) }