You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用com.google.android.gms.vision的CameraSource在Redmi Note 12拍照返回黑图求助

解决Redmi Note 12上CameraSource拍照返回黑图的问题

以下是针对该设备专属问题的具体调整方案:

  • 检查并确认相机权限配置
    Redmi设备的MIUI系统对权限管控较严格,需确保已正确申请并获取相机权限:

    1. 在AndroidManifest.xml中声明权限:
      <uses-permission android:name="android.permission.CAMERA" />
      <uses-feature android:name="android.hardware.camera" />
      <uses-feature android:name="android.hardware.camera.autofocus" />
      
    2. Android 6.0及以上版本需动态申请权限,且确保用户已授予相机权限。
  • 指定兼容的预览与拍照尺寸
    Redmi Note 12的相机可能不支持CameraSource默认尺寸,需手动设置设备兼容的参数:

    1. 获取相机支持的输出尺寸列表:
      CameraManager manager = (CameraManager) getSystemService(Context.CAMERA_SERVICE);
      String cameraId = manager.getCameraIdList()[0];
      CameraCharacteristics characteristics = manager.getCameraCharacteristics(cameraId);
      StreamConfigurationMap map = characteristics.get(CameraCharacteristics.SCALER_STREAM_CONFIGURATION_MAP);
      Size[] outputSizes = map.getOutputSizes(ImageFormat.JPEG);
      
    2. 选择与设备屏幕分辨率接近的尺寸,配置到CameraSource:
      CameraSource cameraSource = new CameraSource.Builder(context, detector)
              .setRequestedPreviewSize(1920, 1080) // 替换为获取到的兼容尺寸
              .setRequestedFps(30.0f)
              .setAutoFocusEnabled(true)
              .build();
      
  • 修正图像旋转与方向适配
    MIUI的相机方向逻辑与原生系统有差异,拍照后需对图像做旋转处理:

    private Bitmap adjustImageRotation(Bitmap bitmap, int rotationDegree) {
        Matrix matrix = new Matrix();
        matrix.postRotate(rotationDegree);
        return Bitmap.createBitmap(bitmap, 0, 0, bitmap.getWidth(), bitmap.getHeight(), matrix, true);
    }
    

    可通过CameraCharacteristics获取相机硬件旋转角度,结合当前屏幕方向计算最终需要旋转的度数。

  • 强制使用Camera2 API
    旧版Camera API在MIUI上可能存在兼容性问题,可强制CameraSource使用Camera2:
    在AndroidManifest.xml中添加元数据:

    <meta-data
        android:name="com.google.android.gms.vision.DEPENDENCIES"
        android:value="camera2" />
    

    同时确保play-services-vision依赖版本在19.0.0及以上。

  • 关闭MIUI专属相机优化
    进入Redmi Note 12的「设置」→「应用设置」→ 找到你的应用 →「权限管理」→「相机」,关闭“优化相机使用”类选项;同时在应用信息中关闭省电模式对相机的限制。

内容的提问来源于stack exchange,提问作者CongCuong

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.12 20:12:25