From e9f63239596be8eb1ce3c58537ea7c6d3a10b521 Mon Sep 17 00:00:00 2001 From: lloyd <353627866@qq.com> Date: Mon, 15 Sep 2025 16:23:47 +0800 Subject: [PATCH 1/3] =?UTF-8?q?=E3=80=90=E5=AE=9E=E7=8E=B0=E7=9B=B8?= =?UTF-8?q?=E6=9C=BA=E6=95=B0=E6=8D=AE=E9=87=87=E9=9B=86=E4=BF=9D=E5=AD=98?= =?UTF-8?q?=E5=8A=9F=E8=83=BD=E3=80=91=E4=BB=A3=E7=A0=81=E4=BC=98=E5=8C=96?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../main/ets/entryability/EntryAbility.ets | 17 ++- entry/src/main/ets/mode/CameraService.ets | 139 +++++++++++------- hvigor/hvigor-config.json5 | 2 +- oh-package.json5 | 2 +- 4 files changed, 99 insertions(+), 61 deletions(-) diff --git a/entry/src/main/ets/entryability/EntryAbility.ets b/entry/src/main/ets/entryability/EntryAbility.ets index 8486004..7e83f2e 100644 --- a/entry/src/main/ets/entryability/EntryAbility.ets +++ b/entry/src/main/ets/entryability/EntryAbility.ets @@ -36,16 +36,21 @@ export default class EntryAbility extends UIAbility { Logger.info(TAG, 'Ability onWindowStageCreate'); windowStage.getMainWindow().then((win: window.Window): void => { win.setWindowLayoutFullScreen(true).then((): void => { - win.setWindowSystemBarEnable([]).then((): void => { - }); - }); + win.setWindowSystemBarEnable([]).catch((err: BusinessError) => { + Logger.error(TAG, `setWindowSystemBarEnable failed, error code=${err.code}, message=${err.message}`); + }) + }).catch((err: BusinessError) => { + Logger.error(TAG, `setWindowLayoutFullScreen failed, error code=${err.code}, message=${err.message}`); + }) win.setWindowSystemBarProperties({ statusBarContentColor: '#ffffff', navigationBarContentColor: '#ffffff' + }).catch((err: BusinessError) => { + Logger.error(TAG, `setWindowSystemBarProperties failed, error code=${err.code}, message=${err.message}`); }) - .then((): void => { - }); - }); + }).catch((err: BusinessError) => { + Logger.error(TAG, `getMainWindow failed, error code=${err.code}, message=${err.message}`); + }) this.requestPermissionsFn(); windowStage.loadContent('pages/Index', (err, data) => { AppStorage.setOrCreate('uiContext', windowStage.getMainWindowSync().getUIContext()); diff --git a/entry/src/main/ets/mode/CameraService.ets b/entry/src/main/ets/mode/CameraService.ets index c84e4f7..fa8ad5b 100644 --- a/entry/src/main/ets/mode/CameraService.ets +++ b/entry/src/main/ets/mode/CameraService.ets @@ -256,7 +256,7 @@ class CameraService { this.videoOutput); } catch (error) { let err = error as BusinessError; - Logger.error(TAG, `initCamera fail: ${JSON.stringify(err)}`); + Logger.error(TAG, `initCamera fail: code=${err.code}, message=${err.message}`); } } @@ -282,7 +282,7 @@ class CameraService { Logger.info(TAG, `getZoomRatioRange success: ${JSON.stringify(zoomRatioRange)}`); } catch (error) { let err = error as BusinessError; - Logger.error(TAG, `getZoomRatioRange fail: ${JSON.stringify(err)}`); + Logger.error(TAG, `getZoomRatioRange fail: code=${err.code}, message=${err.message}}`); } try { @@ -290,7 +290,7 @@ class CameraService { Logger.info(TAG, 'setZoomRatioFn success'); } catch (error) { let err = error as BusinessError; - Logger.error(TAG, `setZoomRatioFn fail: ${JSON.stringify(err)}`); + Logger.error(TAG, `setZoomRatioFn fail: code=${err.code}, message=${err.message}`); } } @@ -332,7 +332,7 @@ class CameraService { await this.previewOutput?.release(); } catch (error) { let err = error as BusinessError; - Logger.error(TAG, `previewOutput release fail: error: ${JSON.stringify(err)}`); + Logger.error(TAG, `previewOutput release fail: code=${err.code}, message=${err.message}`); } finally { this.previewOutput = undefined; } @@ -340,7 +340,7 @@ class CameraService { await this.photoOutput?.release(); } catch (error) { let err = error as BusinessError; - Logger.error(TAG, `photoOutput release fail: error: ${JSON.stringify(err)}`); + Logger.error(TAG, `photoOutput release fail: code=${err.code}, message=${err.message}`); } finally { this.photoOutput = undefined; } @@ -348,7 +348,7 @@ class CameraService { await this.avRecorder?.release(); } catch (error) { let err = error as BusinessError; - Logger.error(TAG, `avRecorder release fail: error: ${JSON.stringify(err)}`); + Logger.error(TAG, `avRecorder release fail: code=${err.code}, message=${err.message}`); } finally { this.avRecorder = undefined; } @@ -357,7 +357,7 @@ class CameraService { await this.videoOutput?.release(); } catch (error) { let err = error as BusinessError; - Logger.error(TAG, `videoOutput release fail: error: ${JSON.stringify(err)}`); + Logger.error(TAG, `videoOutput release fail: code=${err.code}, message=${err.message}`); } finally { this.videoOutput = undefined; } @@ -365,7 +365,7 @@ class CameraService { await this.session?.release(); } catch (error) { let err = error as BusinessError; - Logger.error(TAG, `captureSession release fail: error: ${JSON.stringify(err)}`); + Logger.error(TAG, `captureSession release fail: code=${err.code}, message=${err.message}`); } finally { this.session = undefined; } @@ -373,7 +373,7 @@ class CameraService { await this.cameraInput?.close(); } catch (error) { let err = error as BusinessError; - Logger.error(TAG, `cameraInput close fail: error: ${JSON.stringify(err)}`); + Logger.error(TAG, `cameraInput close fail: code=${err.code}, message=${err.message}`); } finally { this.cameraInput = undefined; } @@ -394,7 +394,7 @@ class CameraService { Logger.info(TAG, `getCameraManager success: ${cameraManager}`); } catch (error) { let err = error as BusinessError; - Logger.error(TAG, `getCameraManager failed: ${JSON.stringify(err)}`); + Logger.error(TAG, `getCameraManager failed: code=${err.code}, message=${err.message}`); } return cameraManager; } @@ -409,7 +409,7 @@ class CameraService { Logger.info(TAG, `getSupportedCameras success: ${this.cameras}, length: ${this.cameras?.length}`); } catch (error) { let err = error as BusinessError; - Logger.error(TAG, `getSupportedCameras failed: ${JSON.stringify(err)}`); + Logger.error(TAG, `getSupportedCameras failed: code=${err.code}, message=${err.message}`); } return supportedCameras; } @@ -425,7 +425,7 @@ class CameraService { Logger.info(TAG, `createPreviewOutput success: ${previewOutput}`); } catch (error) { let err = error as BusinessError; - Logger.error(TAG, `createPreviewOutput failed: ${JSON.stringify(err)}`); + Logger.error(TAG, `createPreviewOutput failed: code=${err.code}, message=${err.message}`); } return previewOutput; } @@ -441,7 +441,7 @@ class CameraService { Logger.info(TAG, `createPhotoOutputFn success: ${photoOutput}`); } catch (error) { let err = error as BusinessError; - Logger.error(TAG, `createPhotoOutputFn failed: ${JSON.stringify(err)}`); + Logger.error(TAG, `createPhotoOutputFn failed: code=${err.code}, message=${err.message}`); } return photoOutput; } @@ -457,7 +457,7 @@ class CameraService { Logger.info(TAG, `createVideoOutputFn success: ${videoOutput}`); } catch (error) { let err = error as BusinessError; - Logger.error(TAG, `createVideoOutputFn failed: ${JSON.stringify(err)}`); + Logger.error(TAG, `createVideoOutputFn failed: code=${err.code}, message=${err.message}`); } return videoOutput; } @@ -474,7 +474,7 @@ class CameraService { Logger.info(TAG, 'createCameraInputFn success'); } catch (error) { let err = error as BusinessError; - Logger.error(TAG, `createCameraInputFn failed: ${JSON.stringify(err)}`); + Logger.error(TAG, `createCameraInputFn failed: code=${err.code}, message=${err.message}`); } return cameraInput; } @@ -490,7 +490,7 @@ class CameraService { Logger.info(TAG, 'cameraInput open success'); } catch (error) { let err = error as BusinessError; - Logger.error(TAG, `createCameraInput failed : ${JSON.stringify(err)}`); + Logger.error(TAG, `createCameraInput failed: code=${err.code}, message=${err.message}`); } return isOpenSuccess; } @@ -536,7 +536,7 @@ class CameraService { Logger.info(TAG, 'sessionFlowFn success'); } catch (error) { let err = error as BusinessError; - Logger.error(TAG, `sessionFlowFn fail : ${JSON.stringify(err)}`); + Logger.error(TAG, `sessionFlowFn fail: code=${err.code}, message=${err.message}`); } } @@ -594,8 +594,9 @@ class CameraService { } this.handlePhotoAssetCb(photoAsset); }); - } catch (err) { - Logger.error(TAG, 'photoOutputCallBack error'); + } catch (error) { + let err = error as BusinessError; + Logger.error(TAG, `photoOutputCallBack error code=${err.code}, message=${err.message}`); } } @@ -614,8 +615,9 @@ class CameraService { previewOutput.on('error', (previewOutputError: BusinessError): void => { Logger.info(TAG, `Preview output previewOutputError: ${JSON.stringify(previewOutputError)}`); }); - } catch (err) { - Logger.error(TAG, 'previewOutputCallBack error'); + } catch (error) { + let err = error as BusinessError; + Logger.error(TAG, `previewOutputCallBack error code=${err.code}, message=${err.message}`); } } @@ -639,7 +641,8 @@ class CameraService { try { cameraManager.on('cameraStatus', this.registerCameraStatusChange); } catch (error) { - Logger.error(TAG, 'onCameraStatusChange error'); + let err = error as BusinessError; + Logger.error(TAG, `onCameraStatusChange error code=${err.code}, message=${err.message}`); } } @@ -665,7 +668,8 @@ class CameraService { Logger.info(TAG, `onCameraInputChange cameraInput error code: ${cameraInputError.code}`); }); } catch (error) { - Logger.error(TAG, 'onCameraInputChange error'); + let err = error as BusinessError; + Logger.error(TAG, `onCameraInputChange error code=${err.code}, message=${err.message}`); } } @@ -680,7 +684,8 @@ class CameraService { 'onCaptureSessionErrorChange captureSession fail: ' + JSON.stringify(captureSessionError.code)); }); } catch (error) { - Logger.error(TAG, 'onCaptureSessionErrorChange error'); + let err = error as BusinessError; + Logger.error(TAG, `onCaptureSessionErrorChange error code=${err.code}, message=${err.message}`); } } @@ -689,7 +694,8 @@ class CameraService { try { avRecorder = await media.createAVRecorder(); } catch (error) { - Logger.error(TAG, `createAVRecorder error: ${error}`); + let err = error as BusinessError; + Logger.error(TAG, `createAVRecorder error code=${err.code}, message=${err.message}`); } return avRecorder; } @@ -703,7 +709,8 @@ class CameraService { 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}`); + let err = error as BusinessError; + Logger.error(TAG, `Failed in openSync, error code=${err.code}, message=${err.message}`); return 0; } } @@ -731,7 +738,7 @@ class CameraService { }; Logger.info(TAG, `prepareAVRecorder videoConfig: ${JSON.stringify(videoConfig)}`); await this.avRecorder?.prepare(videoConfig).catch((err: BusinessError): void => { - Logger.error(TAG, `prepareAVRecorder prepare err: ${JSON.stringify(err)}`); + Logger.error(TAG, `prepareAVRecorder prepare error code=${err.code}, message=${err.message}`); }); } @@ -743,7 +750,7 @@ class CameraService { this.isRecording = true; } catch (error) { let err = error as BusinessError; - Logger.error(TAG, `startVideo err: ${JSON.stringify(err)}`); + Logger.error(TAG, `startVideo error code=${err.code}, message=${err.message}`); } Logger.info(TAG, 'startVideo End of call'); } @@ -764,7 +771,7 @@ class CameraService { this.isRecording = false; } catch (error) { let err = error as BusinessError; - Logger.error(TAG, `stopVideo err: ${JSON.stringify(err)}`); + Logger.error(TAG, `stopVideo error code=${err.code}, message=${err.message}`); } Logger.info(TAG, 'stopVideo End of call'); } @@ -773,52 +780,78 @@ class CameraService { * Flashing lights */ hasFlashFn(flashMode: camera.FlashMode): void { - let hasFlash = this.session?.hasFlash(); - Logger.debug(TAG, `hasFlash success, hasFlash: ${hasFlash}`); - let isFlashModeSupported = this.session?.isFlashModeSupported(flashMode); - Logger.debug(TAG, `isFlashModeSupported success, isFlashModeSupported: ${isFlashModeSupported}`); - this.session?.setFlashMode(flashMode); + try { + let hasFlash = this.session?.hasFlash(); + Logger.debug(TAG, `hasFlash success, hasFlash: ${hasFlash}`); + let isFlashModeSupported = this.session?.isFlashModeSupported(flashMode); + Logger.debug(TAG, `isFlashModeSupported success, isFlashModeSupported: ${isFlashModeSupported}`); + this.session?.setFlashMode(flashMode); + } catch (error) { + let err = error as BusinessError; + Logger.error(TAG, `hasFlashFn failed, error code=${err.code}, message=${err.message}`); + } } /** * Set the current focus */ setFocusPoint(point: camera.Point): void { - this.session?.setFocusPoint(point); - Logger.info(TAG, `setFocusPoint success point: ${JSON.stringify(point)}`); - // Get the current focus - let nowPoint: camera.Point | undefined = undefined; - nowPoint = this.session?.getFocusPoint(); - Logger.info(TAG, `getFocusPoint success, nowPoint: ${JSON.stringify(nowPoint)}`); + try { + this.session?.setFocusPoint(point); + Logger.info(TAG, `setFocusPoint success point: ${JSON.stringify(point)}`); + // Get the current focus + let nowPoint: camera.Point | undefined = undefined; + nowPoint = this.session?.getFocusPoint(); + Logger.info(TAG, `getFocusPoint success, nowPoint: ${JSON.stringify(nowPoint)}`); + } catch (error) { + let err = error as BusinessError; + Logger.error(TAG, `setFocusPoint failed, error code=${err.code}, message=${err.message}`); + } } /** * Exposure area */ isMeteringPoint(point: camera.Point): void { - let exposureMode: camera.ExposureMode | undefined = undefined; - exposureMode = this.session?.getExposureMode(); - Logger.info(TAG, `getExposureMode success, exposureMode: ${exposureMode}`); - this.session?.setMeteringPoint(point); - let exposurePoint: camera.Point | undefined = undefined; - exposurePoint = this.session?.getMeteringPoint(); - Logger.info(TAG, `getMeteringPoint exposurePoint: ${JSON.stringify(exposurePoint)}`); + try { + let exposureMode: camera.ExposureMode | undefined = undefined; + exposureMode = this.session?.getExposureMode(); + Logger.info(TAG, `getExposureMode success, exposureMode: ${exposureMode}`); + this.session?.setMeteringPoint(point); + let exposurePoint: camera.Point | undefined = undefined; + exposurePoint = this.session?.getMeteringPoint(); + Logger.info(TAG, `getMeteringPoint exposurePoint: ${JSON.stringify(exposurePoint)}`); + } catch (error) { + let err = error as BusinessError; + Logger.error(TAG, `isMeteringPoint failed, error code=${err.code}, message=${err.message}`); + } } /** * Exposure compensation */ isExposureBiasRange(exposureBias: number): void { - Logger.debug(TAG, `setExposureBias value ${exposureBias}`); - let biasRangeArray: Array | undefined = []; - biasRangeArray = this.session?.getExposureBiasRange(); - Logger.debug(TAG, `getExposureBiasRange success, biasRangeArray: ${JSON.stringify(biasRangeArray)}`); - this.session?.setExposureBias(exposureBias); + try { + Logger.debug(TAG, `setExposureBias value ${exposureBias}`); + let biasRangeArray: Array | undefined = []; + biasRangeArray = this.session?.getExposureBiasRange(); + Logger.debug(TAG, `getExposureBiasRange success, biasRangeArray: ${JSON.stringify(biasRangeArray)}`); + this.session?.setExposureBias(exposureBias); + } catch (error) { + let err = error as BusinessError; + Logger.error(TAG, `isExposureBiasRange failed, error code=${err.code}, message=${err.message}`); + } } setFocusMode(focusMode: camera.FocusMode): void { Logger.info(TAG, `setFocusMode is called`); - let isSupported = this.session?.isFocusModeSupported(focusMode); + let isSupported = false; + try { + isSupported = this.session!.isFocusModeSupported(focusMode); + } catch (error) { + let err = error as BusinessError; + Logger.error(TAG, `isFocusModeSupported failed, error code=${err.code}, message=${err.message}`); + } Logger.info(TAG, `setFocusMode isSupported: ${isSupported}`); if (!isSupported) { return; diff --git a/hvigor/hvigor-config.json5 b/hvigor/hvigor-config.json5 index 8c56bf6..c1c9169 100644 --- a/hvigor/hvigor-config.json5 +++ b/hvigor/hvigor-config.json5 @@ -1,5 +1,5 @@ { - "modelVersion": "5.0.0", + "modelVersion": "5.0.5", "dependencies": { }, "execution": { diff --git a/oh-package.json5 b/oh-package.json5 index 664dd53..481fb68 100644 --- a/oh-package.json5 +++ b/oh-package.json5 @@ -1,5 +1,5 @@ { - "modelVersion": "5.0.0", + "modelVersion": "5.0.5", "name": "camerademo", "version": "1.0.0", "description": "Please describe the basic information.", -- Gitee From f321472a229827c0c5393a7daf2ed885a5250f59 Mon Sep 17 00:00:00 2001 From: lloyd <353627866@qq.com> Date: Mon, 15 Sep 2025 16:29:15 +0800 Subject: [PATCH 2/3] =?UTF-8?q?=E3=80=90=E5=AE=9E=E7=8E=B0=E7=9B=B8?= =?UTF-8?q?=E6=9C=BA=E6=95=B0=E6=8D=AE=E9=87=87=E9=9B=86=E4=BF=9D=E5=AD=98?= =?UTF-8?q?=E5=8A=9F=E8=83=BD=E3=80=91=E4=BB=A3=E7=A0=81=E4=BC=98=E5=8C=96?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- entry/src/main/ets/mode/CameraService.ets | 48 ++++++++++++++++------- 1 file changed, 33 insertions(+), 15 deletions(-) diff --git a/entry/src/main/ets/mode/CameraService.ets b/entry/src/main/ets/mode/CameraService.ets index fa8ad5b..64401c9 100644 --- a/entry/src/main/ets/mode/CameraService.ets +++ b/entry/src/main/ets/mode/CameraService.ets @@ -266,7 +266,12 @@ class CameraService { getZoomRatioRange(): Array { let zoomRatioRange: Array = []; if (this.session !== undefined) { - zoomRatioRange = this.session.getZoomRatioRange(); + try { + zoomRatioRange = this.session.getZoomRatioRange(); + } catch (error) { + let err = error as BusinessError; + Logger.error(TAG, `getZoomRatioRange fail: code=${err.code}, message=${err.message}`); + } } return zoomRatioRange; } @@ -298,14 +303,20 @@ class CameraService { * Trigger a photo with specified parameters. */ async takePicture(): Promise { - Logger.info(TAG, 'takePicture start'); - let cameraDeviceIndex = GlobalContext.get().getT('cameraDeviceIndex'); - let photoSettings: camera.PhotoCaptureSetting = { - quality: camera.QualityLevel.QUALITY_LEVEL_HIGH, - mirror: cameraDeviceIndex ? true : false - }; - await this.photoOutput?.capture(photoSettings); - Logger.info(TAG, 'takePicture end'); + try { + Logger.info(TAG, 'takePicture start'); + let cameraDeviceIndex = GlobalContext.get().getT('cameraDeviceIndex'); + let photoSettings: camera.PhotoCaptureSetting = { + quality: camera.QualityLevel.QUALITY_LEVEL_HIGH, + mirror: cameraDeviceIndex ? true : false + }; + await this.photoOutput?.capture(photoSettings); + Logger.info(TAG, 'takePicture end'); + } catch (error) { + let err = error as BusinessError; + Logger.error(`apply takePicture failed with error: ${err.code}, ${err.message}`); + } + } async saveCameraPhoto(asset: photoAccessHelper.PhotoAsset) { @@ -318,7 +329,8 @@ class CameraService { assetChangeRequest.saveCameraPhoto(); await phAccessHelper.applyChanges(assetChangeRequest); Logger.info('apply saveCameraPhoto successfully'); - } catch (err) { + } catch (error) { + let err = error as BusinessError; Logger.error(`apply saveCameraPhoto failed with error: ${err.code}, ${err.message}`); } } @@ -541,12 +553,18 @@ class CameraService { } setVideoStabilizationFn(session: camera.VideoSession, videoStabilizationMode: camera.VideoStabilizationMode): void { - // Check if the specified video stabilization mode is supported. - let isVideoStabilizationModeSupported: boolean = session.isVideoStabilizationModeSupported(videoStabilizationMode); - if (isVideoStabilizationModeSupported) { - session.setVideoStabilizationMode(videoStabilizationMode); + try { + // Check if the specified video stabilization mode is supported. + let isVideoStabilizationModeSupported: boolean = + session.isVideoStabilizationModeSupported(videoStabilizationMode); + if (isVideoStabilizationModeSupported) { + session.setVideoStabilizationMode(videoStabilizationMode); + } + Logger.info(TAG, 'setVideoStabilizationFn success'); + } catch (error) { + let err = error as BusinessError; + Logger.error(TAG, `setVideoStabilizationFn fail: code=${err.code}, message=${err.message}`); } - Logger.info(TAG, 'setVideoStabilizationFn success'); } /** -- Gitee From 96da40a5d29f707b235a73df0acd3127d593a5a1 Mon Sep 17 00:00:00 2001 From: lloyd <353627866@qq.com> Date: Mon, 15 Sep 2025 16:30:36 +0800 Subject: [PATCH 3/3] =?UTF-8?q?=E3=80=90=E5=AE=9E=E7=8E=B0=E7=9B=B8?= =?UTF-8?q?=E6=9C=BA=E6=95=B0=E6=8D=AE=E9=87=87=E9=9B=86=E4=BF=9D=E5=AD=98?= =?UTF-8?q?=E5=8A=9F=E8=83=BD=E3=80=91=E4=BB=A3=E7=A0=81=E4=BC=98=E5=8C=96?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- entry/src/main/ets/mode/CameraService.ets | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/entry/src/main/ets/mode/CameraService.ets b/entry/src/main/ets/mode/CameraService.ets index 64401c9..d3da74a 100644 --- a/entry/src/main/ets/mode/CameraService.ets +++ b/entry/src/main/ets/mode/CameraService.ets @@ -862,19 +862,19 @@ class CameraService { } setFocusMode(focusMode: camera.FocusMode): void { - Logger.info(TAG, `setFocusMode is called`); - let isSupported = false; try { + Logger.info(TAG, `setFocusMode is called`); + let isSupported = false; isSupported = this.session!.isFocusModeSupported(focusMode); + Logger.info(TAG, `setFocusMode isSupported: ${isSupported}`); + if (!isSupported) { + return; + } + this.session?.setFocusMode(focusMode); } catch (error) { let err = error as BusinessError; - Logger.error(TAG, `isFocusModeSupported failed, error code=${err.code}, message=${err.message}`); - } - Logger.info(TAG, `setFocusMode isSupported: ${isSupported}`); - if (!isSupported) { - return; + Logger.error(TAG, `setFocusMode failed, error code=${err.code}, message=${err.message}`); } - this.session?.setFocusMode(focusMode); } } -- Gitee