ocr识别相机修改
This commit is contained in:
		
							parent
							
								
									236d4e237c
								
							
						
					
					
						commit
						6a02be057f
					
				| 
						 | 
				
			
			@ -164,11 +164,15 @@ export default {
 | 
			
		|||
      showFocusIndicator: false,
 | 
			
		||||
      focusIndicatorStyle: {},
 | 
			
		||||
      autoFocusEnabled: true,
 | 
			
		||||
      focusTimeout: null
 | 
			
		||||
      focusTimeout: null,
 | 
			
		||||
      // 设备信息
 | 
			
		||||
      systemInfo: null
 | 
			
		||||
    }
 | 
			
		||||
  },
 | 
			
		||||
  onShow() {
 | 
			
		||||
    this.initializeCordova();
 | 
			
		||||
    // 获取设备信息用于相机配置
 | 
			
		||||
    this.getDeviceInfo();
 | 
			
		||||
  },
 | 
			
		||||
  onHide() {
 | 
			
		||||
    this.cleanup();
 | 
			
		||||
| 
						 | 
				
			
			@ -177,6 +181,36 @@ export default {
 | 
			
		|||
    this.cleanup();
 | 
			
		||||
  },
 | 
			
		||||
  methods: {
 | 
			
		||||
    // 获取设备信息
 | 
			
		||||
    getDeviceInfo() {
 | 
			
		||||
      try {
 | 
			
		||||
        const systemInfo = uni.getSystemInfoSync();
 | 
			
		||||
        console.log('设备信息:', systemInfo);
 | 
			
		||||
        this.systemInfo = systemInfo;
 | 
			
		||||
      } catch (error) {
 | 
			
		||||
        console.error('获取设备信息失败:', error);
 | 
			
		||||
      }
 | 
			
		||||
    },
 | 
			
		||||
 | 
			
		||||
    // 设置全屏模式(仅Android)
 | 
			
		||||
    setFullscreenMode(enable) {
 | 
			
		||||
      try {
 | 
			
		||||
        // #ifdef APP-PLUS
 | 
			
		||||
        if (this.systemInfo && this.systemInfo.platform === 'android') {
 | 
			
		||||
          if (enable) {
 | 
			
		||||
            // 隐藏状态栏和导航栏
 | 
			
		||||
            plus.navigator.setFullscreen(true);
 | 
			
		||||
          } else {
 | 
			
		||||
            // 恢复状态栏和导航栏
 | 
			
		||||
            plus.navigator.setFullscreen(false);
 | 
			
		||||
          }
 | 
			
		||||
        }
 | 
			
		||||
        // #endif
 | 
			
		||||
      } catch (error) {
 | 
			
		||||
        console.error('设置全屏模式失败:', error);
 | 
			
		||||
      }
 | 
			
		||||
    },
 | 
			
		||||
 | 
			
		||||
    // 初始化Cordova - 改进版本
 | 
			
		||||
    initializeCordova() {
 | 
			
		||||
      console.log('开始初始化Cordova...');
 | 
			
		||||
| 
						 | 
				
			
			@ -289,6 +323,9 @@ export default {
 | 
			
		|||
        }
 | 
			
		||||
      }
 | 
			
		||||
      try {
 | 
			
		||||
        // 在Android上尝试全屏模式
 | 
			
		||||
        this.setFullscreenMode(true);
 | 
			
		||||
        
 | 
			
		||||
        // 显示相机界面
 | 
			
		||||
        this.showCamera = true;
 | 
			
		||||
        // 等待UI更新
 | 
			
		||||
| 
						 | 
				
			
			@ -298,6 +335,7 @@ export default {
 | 
			
		|||
      } catch (error) {
 | 
			
		||||
        console.error('打开相机失败:', error);
 | 
			
		||||
        this.showCamera = false;
 | 
			
		||||
        this.setFullscreenMode(false);
 | 
			
		||||
        uni.showToast({
 | 
			
		||||
          title: error.message || '打开相机失败',
 | 
			
		||||
          icon: 'none',
 | 
			
		||||
| 
						 | 
				
			
			@ -316,18 +354,50 @@ export default {
 | 
			
		|||
          return;
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        // 获取屏幕尺寸
 | 
			
		||||
        const screenWidth = uni.getSystemInfoSync().screenWidth;
 | 
			
		||||
        const screenHeight = uni.getSystemInfoSync().screenHeight;
 | 
			
		||||
        // 获取屏幕尺寸和状态栏高度
 | 
			
		||||
        const systemInfo = this.systemInfo || uni.getSystemInfoSync();
 | 
			
		||||
        const screenWidth = systemInfo.screenWidth;
 | 
			
		||||
        const screenHeight = systemInfo.screenHeight;
 | 
			
		||||
        const statusBarHeight = systemInfo.statusBarHeight || 0;
 | 
			
		||||
        
 | 
			
		||||
        // 判断平台和设备,动态调整配置
 | 
			
		||||
        let cameraY = 0;
 | 
			
		||||
        let cameraHeight = screenHeight;
 | 
			
		||||
        let toBack = false;
 | 
			
		||||
        
 | 
			
		||||
        // Android设备处理导航栏遮挡问题
 | 
			
		||||
        if (systemInfo.platform === 'android') {
 | 
			
		||||
          // 对于Android,尝试避开导航栏
 | 
			
		||||
          const navigationBarHeight = 44;
 | 
			
		||||
          cameraY = statusBarHeight + navigationBarHeight;
 | 
			
		||||
          cameraHeight = screenHeight - cameraY;
 | 
			
		||||
          toBack = false;
 | 
			
		||||
        } else {
 | 
			
		||||
          // iOS或其他平台,使用全屏预览
 | 
			
		||||
          cameraY = 0;
 | 
			
		||||
          cameraHeight = screenHeight;
 | 
			
		||||
          toBack = true;
 | 
			
		||||
        }
 | 
			
		||||
        
 | 
			
		||||
        console.log('屏幕信息:', {
 | 
			
		||||
          platform: systemInfo.platform,
 | 
			
		||||
          screenWidth, 
 | 
			
		||||
          screenHeight, 
 | 
			
		||||
          statusBarHeight, 
 | 
			
		||||
          cameraY, 
 | 
			
		||||
          cameraHeight,
 | 
			
		||||
          toBack
 | 
			
		||||
        });
 | 
			
		||||
        
 | 
			
		||||
        const options = {
 | 
			
		||||
          x: 0,
 | 
			
		||||
          y: 0,
 | 
			
		||||
          width: window.innerWidth || 375,
 | 
			
		||||
          height: window.innerHeight || 667,
 | 
			
		||||
          y: cameraY,
 | 
			
		||||
          width: screenWidth,
 | 
			
		||||
          height: cameraHeight,
 | 
			
		||||
          camera: CameraPreview.CAMERA_DIRECTION?.BACK || 'back',
 | 
			
		||||
          tapPhoto: false,
 | 
			
		||||
          previewDrag: false,
 | 
			
		||||
          toBack: true,  // 设置为 true,让相机显示在背景
 | 
			
		||||
          toBack: toBack,  // 根据平台动态设置
 | 
			
		||||
          alpha: 1,
 | 
			
		||||
          tapFocus: true,  // 启用点击聚焦
 | 
			
		||||
          disableExifHeaderStripping: false
 | 
			
		||||
| 
						 | 
				
			
			@ -513,6 +583,8 @@ export default {
 | 
			
		|||
        this.showCamera = false;
 | 
			
		||||
        this.cameraStarted = false;
 | 
			
		||||
        this.resetFocusState();
 | 
			
		||||
        // 恢复全屏模式
 | 
			
		||||
        this.setFullscreenMode(false);
 | 
			
		||||
      }
 | 
			
		||||
    },
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			@ -894,6 +966,8 @@ export default {
 | 
			
		|||
      }
 | 
			
		||||
      // 重置聚焦状态
 | 
			
		||||
      this.resetFocusState();
 | 
			
		||||
      // 恢复全屏模式
 | 
			
		||||
      this.setFullscreenMode(false);
 | 
			
		||||
    }
 | 
			
		||||
  }
 | 
			
		||||
}
 | 
			
		||||
| 
						 | 
				
			
			@ -946,13 +1020,13 @@ export default {
 | 
			
		|||
  left: 0;
 | 
			
		||||
  width: 100vw;
 | 
			
		||||
  height: 100vh;
 | 
			
		||||
  background-color: transparent;
 | 
			
		||||
  background-color: #000000;
 | 
			
		||||
  z-index: 99999;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
.top-tip {
 | 
			
		||||
  position: absolute;
 | 
			
		||||
  top: 80rpx;
 | 
			
		||||
  top: 120rpx;
 | 
			
		||||
  left: 50%;
 | 
			
		||||
  transform: translateX(-50%);
 | 
			
		||||
  z-index: 10;
 | 
			
		||||
| 
						 | 
				
			
			@ -972,7 +1046,7 @@ export default {
 | 
			
		|||
/* 聚焦状态提示 */
 | 
			
		||||
.focus-tip {
 | 
			
		||||
  position: absolute;
 | 
			
		||||
  top: 160rpx;
 | 
			
		||||
  top: 200rpx;
 | 
			
		||||
  left: 50%;
 | 
			
		||||
  transform: translateX(-50%);
 | 
			
		||||
  z-index: 10;
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
		Loading…
	
		Reference in New Issue