uni-app uni.scanCode 强制横屏 吊起摄像头扫码时 部分机型和强制横屏的方向不一致

uni-app uni.scanCode 强制横屏 吊起摄像头扫码时 部分机型和强制横屏的方向不一致

信息类别 详情
产品分类 uniapp/App
PC开发环境操作系统 Windows
PC开发环境操作系统版本号 win10
手机系统 Android
手机系统版本号 Android 14
手机厂商 海康威视
手机机型 DS-MDP002
页面类型 vue
vue版本 vue3
打包方式 云端
项目创建方式 CLI
CLI版本号 ^3.3.11

操作步骤:

强制横屏 点击按钮 吊起摄像头扫码

预期结果:

uni.scanCode 强制横屏 吊起摄像头扫码时 和强制横屏的方向相同

实际结果:

uni.scanCode 强制横屏 吊起摄像头扫码时 和强制横屏的方向相反

bug描述:

uni.scanCode 强制横屏 吊起摄像头扫码时 和强制横屏的方向相反

现象.zip


更多关于uni-app uni.scanCode 强制横屏 吊起摄像头扫码时 部分机型和强制横屏的方向不一致的实战教程也可以访问 https://www.itying.com/category-93-b0.html

2 回复

怎么设置的横屏?

更多关于uni-app uni.scanCode 强制横屏 吊起摄像头扫码时 部分机型和强制横屏的方向不一致的实战教程也可以访问 https://www.itying.com/category-93-b0.html


这是一个已知的Android设备兼容性问题,主要出现在某些定制化设备上(如海康威视的工业设备)。

问题原因:

  1. 设备厂商对摄像头模块的默认方向定义与标准Android规范不一致
  2. uni.scanCode调用的系统扫码界面未正确读取设备的屏幕方向配置
  3. 强制横屏设置与摄像头硬件方向产生冲突

临时解决方案:

  1. 在调用scanCode前,通过plus.screen.lockOrientation设置屏幕方向:
// 尝试不同的横屏方向
plus.screen.lockOrientation('landscape-primary'); // 或 'landscape-secondary'
uni.scanCode({...});
  1. 在扫码完成后恢复屏幕方向:
plus.screen.unlockOrientation();
  1. 针对特定设备做方向适配:
// 检测设备型号进行特殊处理
if (device.model.includes('DS-MDP002')) {
    plus.screen.lockOrientation('landscape-secondary');
}
回到顶部