ocr识别相机修改

This commit is contained in:
syruan 2025-07-31 19:09:42 +08:00
parent 236d4e237c
commit 6a02be057f
1 changed files with 85 additions and 11 deletions

View File

@ -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;