From 637b123fcc86d488c7678431452928f8e7bc6a91 Mon Sep 17 00:00:00 2001 From: lvyuankang <1344032923@qq.com> Date: Tue, 4 Jun 2024 12:07:21 +0800 Subject: [PATCH] =?UTF-8?q?=E5=90=88=E5=B9=B6=E4=BB=A3=E7=A0=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../compontents/FaceCompareByhaikang.ets | 338 ------------------ 1 file changed, 338 deletions(-) delete mode 100644 entry/src/main/ets/pages/compontents/FaceCompareByhaikang.ets diff --git a/entry/src/main/ets/pages/compontents/FaceCompareByhaikang.ets b/entry/src/main/ets/pages/compontents/FaceCompareByhaikang.ets deleted file mode 100644 index f9492f7a..00000000 --- a/entry/src/main/ets/pages/compontents/FaceCompareByhaikang.ets +++ /dev/null @@ -1,338 +0,0 @@ -import camera from '@ohos.multimedia.camera'; -import { cameraService } from '../../common/service/cameraService'; -import { voiceService } from '../../common/service/voiceService'; -import { faceCompare } from '../../api/userInfo'; -import prompt from '@ohos.prompt'; -import grantPermission from '../../common/utils/PermissionUtils'; -import CameraModel from '../../common/service/CameraModel'; - -let previewWidth; -let previewHeight; - -const PERMISSIONS: Array = [ - 'ohos.permission.CAMERA'] - -@Component -export default struct FaceCompare { - @State imageBase64: string = 'data:image/jpeg;base64,' - @Prop sfzh: string; - @Prop firstImage: string; - @Link showFaceCompare: boolean; - @Link faceCompareSucess: boolean; - @State imageThumbnail: string = ''; - private mXComponentController: XComponentController = new XComponentController(); - private cameraModel: CameraModel = new CameraModel(); - private cameraObj = null; - private timer = null; //人脸比对执行任务定时器 - private stopClose = false; // 阻止用户关闭此组件 - private times = 1; //人脸比对失败次数, 超过3次将不会自动比对,需要点击重新打开重新触发 - private vocObj = null; - private surfaceId: string = ''; - - constructor() { - super() - } - - build() { - Column() { - Column() { - Text('照片比对') - .lineHeight('16%') - .height('16%') - .fontWeight(FontWeight.Bold) - .fontSize(24) - - Row() { - Row() { - XComponent({ - id: 'componentId', - type: 'surface', - controller: this.mXComponentController - }) - .onLoad(() => { - // this.mXComponentController.setXComponentSurfaceSize({surfaceWidth:640,surfaceHeight:480}); - // let surfaceId = this.mXComponentController.getXComponentSurfaceId() - // console.log('jiangsong: xcomponentController this.surfaceId = ' + surfaceId) - this.mXComponentController.setXComponentSurfaceSize({ surfaceWidth: 640, surfaceHeight: 480 }); - this.surfaceId = this.mXComponentController.getXComponentSurfaceId(); - this.cameraModel.initCamera(this.surfaceId); - - this.readyToTakePhoto(this.surfaceId) - - }) - .width('100%') - .height('100%') - .backgroundColor(Color.Black) - } - .width('48%') - .height('100%') - - Row() { - Image(this.firstImage) - .width('100%') - .height('100%') - .backgroundColor(Color.Black) - } - .width('48%') - .height('100%') - } - .width('88.9%') - .height('53.2%') - .justifyContent(FlexAlign.SpaceBetween) - - Text('正在等待拍照…') - .lineHeight('16%') - .height('16%') - .fontWeight(FontWeight.Bold) - .fontColor('#CC7E00') - - Column() { - Row() { - Text('若验证无响应,点击此处') - .lineHeight('100%') - .height('100%') - .fontColor('#000000') - - Column() { - Text('重新打开') - .lineHeight('100%') - .height('100%') - .fontColor(Color.White) - .fontSize(23) - } - .width('22.8%') - .height('89.9%') - .backgroundImage($r('app.media.nor')) - .backgroundImageSize({ width: '100%', height: '100%' }) - .onClick(async () => { - this.times = 1; - // this.takePhoto('face_check.mp3'); - this.readyToTakePhoto(this.surfaceId); - // await this.cameraObj.releaseSource() - }) - } - .width('88.9%') - .height('100%') - .justifyContent(FlexAlign.SpaceBetween) - } - .width('100%') - .height('16%') - .position({ y: '84%' }) - .borderRadius({ topLeft: 0, topRight: 0, bottomLeft: 15, bottomRight: 15 }) - .backgroundColor('#CCC4B8') - } - .width('68.75%') - .height('73.2%') - .backgroundColor('#E5E3DF') - .borderRadius(15) - .margin({ top: '4%' }) - - Column() { - } - .width('8.5%') - .height('15.1%') - .backgroundImage($r('app.media.close')) - .backgroundImageSize({ width: '100%', height: '100%' }) - .onClick(() => { - // prompt.showToast({ - // message: '人脸比对程序正在执行,请等待程序执行完毕。', - // duration: 3000 - // }); - this.showFaceCompare = false - this.faceCompareSucess = false - return - console.log('jiangsong close the faceCompare componet'); - if (!this.stopClose) { - this.showFaceCompare = false - - } else { - prompt.showToast({ - message: '人脸比对程序正在执行,请等待程序执行完毕。', - duration: 3000 - }); - this.showFaceCompare = false - } - }) - } - .width('100%') - .height('100%') - .backgroundColor('rgba(0, 0, 0, 0.8)') - .position({ x: 0, y: 0 }) - } - - onPageShow() { - this.cameraModel.initCamera(this.surfaceId); - } - - async aboutToAppear() { - // this.cameraModel.initCamera(this.surfaceId); - await grantPermission().then(res => { - if (this.surfaceId) { - this.cameraModel.initCamera(this.surfaceId); - } - }).catch(rej => { - }) - - this.surfaceId = this.mXComponentController.getXComponentSurfaceId(); - // this.cameraModel.setTakePictureHandleCallback(this.takePictureHandle.bind(this)); - } - - // takePictureHandle = (thumbnail: string) => { - // this.imageThumbnail = thumbnail; - // }; - - async initCamera(surfaceId: string) { - //动态获取隐私权限 - let context = getContext(this) as any - await context.requestPermissionsFromUser(PERMISSIONS) - console.log('grantPermission,requestPermissionsFromUser'); - // 创建CameraManager对象 - let cameraManager = await camera.getCameraManager(context) - if (!cameraManager) { - console.error('Failed to get the CameraManager instance'); - } - // 获取相机列表 - let cameraArray = await cameraManager.getSupportedCameras() - if (!cameraArray) { - console.error('Failed to get the cameras'); - } - for (let index = 0; index < cameraArray.length; index++) { - console.log('cameraId : ' + cameraArray[index].cameraId) // 获取相机ID - console.log('cameraPosition : ' + cameraArray[index].cameraPosition) // 获取相机位置 - console.log('cameraType : ' + cameraArray[index].cameraType) // 获取相机类型 - console.log('connectionType : ' + cameraArray[index].connectionType) // 获取相机连接类型 - } - - // 创建相机输入流 - let cameraInput = await cameraManager.createCameraInput(cameraArray[0]) - - // 打开相机 - await cameraInput.open().then(() => { - console.log('opencamera succ.'); - }).catch(function (err) { - console.log("opencamera failed with error:" + err); - }); - - // 获取相机设备支持的输出流能力 - let cameraOutputCap = await cameraManager.getSupportedOutputCapability(cameraArray[0]); - if (!cameraOutputCap) { - console.error("outputCapability outputCapability == null || undefined") - } else { - console.log("outputCapability: " + JSON.stringify(cameraOutputCap)); - } - - //获取相机支持的输出能力--支持的预览配置信息 - let previewProfilesArray = cameraOutputCap.previewProfiles; - if (!previewProfilesArray) { - console.error("createOutput previewProfilesArray == null || undefined") - } else { - console.log("previewProfiles:" + JSON.stringify(previewProfilesArray[0])) - previewWidth = previewProfilesArray[0].size.width; - previewHeight = previewProfilesArray[0].size.height; - } - - // 创建预览输出流,其中参数 surfaceId 参考下面 XComponent 组件,预览流为XComponent组件提供的surface - let previewOutput = await cameraManager.createPreviewOutput(previewProfilesArray[0], surfaceId) - if (!previewOutput) { - console.error("Failed to create the PreviewOutput instance.") - } else { - console.log("create the PreviewOutput instance succ.") - } - - //创建会话 - let captureSession = await cameraManager.createCaptureSession() - if (!captureSession) { - console.error('Failed to create the CaptureSession instance.'); - return; - } - console.log('Callback returned with the CaptureSession instance.' + captureSession); - - // 开始配置会话 - await captureSession.beginConfig() - - // 向会话中添加相机输入流 - await captureSession.addInput(cameraInput) - - // 向会话中添加预览输入流 - await captureSession.addOutput(previewOutput) - - // 提交会话配置 - await captureSession.commitConfig() - // 启动会话 - await captureSession.start().then(() => { - console.log('captureSession start success.'); - }).catch(function (err) { - console.log("captureSession start failed with error:" + err); - }); - } - - async aboutToDisappear() { - clearTimeout(this.timer) - this.vocObj.releasePlayer() - this.cameraObj.releaseSource() - } - - async readyToTakePhoto(surfaceId) { - this.surfaceId = surfaceId; - this.cameraObj = new cameraService(surfaceId); - - setTimeout(() => { - this.showFaceCompare = false - this.faceCompareSucess = true; - }, 3000) - return - await this.cameraObj.initCamera((img) => { - console.log('jiangsong getPhoto res.' + img.slice(0, 100)) - this.imageBase64 = 'data:image/jpeg;base64,' + img; - const firstImage = this.firstImage.substr(22) - faceCompare({ - sfzh: this.sfzh, - firstImage: firstImage, - // sfzh: '321281198605076819', - // firstImage: this.firstImage, - secondImage: img, - type: 2, - verifyType: 1 - }).then(res => { - if (res) { - console.log('jiangsong face compare success' + JSON.stringify(res)) - this.showFaceCompare = false - this.faceCompareSucess = true; - } else { - console.log('jiangsong face compare faild') - //3s后开始语音提示 - this.timer = setTimeout(() => { - this.takePhoto('face_fail.mp3'); - }, 3000) - } - }) - }); - this.vocObj = new voiceService(async (status) => { - console.log('jiangsong voiceService callback. status == ' + status) - if (status == 'completed') { - this.cameraObj.takePhoto(); - } - }); - - //3s后开始语音提示 - this.timer = setTimeout(() => { - this.takePhoto('face_check.mp3'); - }, 3000) - } - - takePhoto(name) { - this.stopClose = true; - if (this.times > 3) { - this.stopClose = false; - return; - } - this.times++; - - this.vocObj.playAudio({ - type: 1, - name: name - }) - } -} - -// export default FaceCompare \ No newline at end of file