Android代码中如何识别当前运行设备并判断摄像头是否倒置
解决方案
方案1:通过设备名称匹配
不同平台可直接读取设备型号,匹配已知的倒置设备列表即可实现判断:
- Android 平台:读取
Build.MODEL字段获取设备型号,示例代码如下:
val deviceModel = Build.MODEL val rotation = if (deviceModel.contains("Vuzix", ignoreCase = true)) { ROTATE.180 } else { ROTATE.NONE }
- iOS 平台:读取
UIDevice.current.model字段获取设备型号,匹配逻辑同上。 - 跨平台框架(Flutter/React Native等):使用对应平台的设备信息插件获取设备型号字段,逻辑和原生开发一致。
方案2:直接检测摄像头物理朝向
不需要维护设备名单,直接读取摄像头内置的传感器朝向参数即可判断:
- Android 平台:通过Camera2 API的
SENSOR_ORIENTATION参数获取摄像头物理朝向,返回值固定为0/90/180/270四种,示例代码如下:
CameraCharacteristics characteristics = cameraManager.getCameraCharacteristics(cameraId); Integer sensorOrientation = characteristics.get(CameraCharacteristics.SENSOR_ORIENTATION); int rotation = (sensorOrientation == 180) ? ROTATE.180 : ROTATE.NONE;
- iOS 平台:通过AVCaptureDevice的相关属性读取摄像头物理朝向,判断是否需要180度旋转即可。
- 注意:如果同时用到前后置摄像头,可增加摄像头类型判断过滤,避免前置摄像头默认朝向干扰逻辑。
补充建议
可以两种方案结合使用:优先匹配已知的倒置设备(如Vuzix),其余未知设备走传感器朝向判断,覆盖更多边界场景。
内容的提问来源于stack exchange,提问作者Big Red Boy
相关产品推荐
相关产品推荐

