android - GetSupportedPreviewSize 返回反向宽度和高度

标签 android android-camera preview

我正在使用 DroidX 开发一个使用相机预览图像的应用。我正在使用的代码在网络上的许多地方都可以找到,但我注意到常用方法“getBestPreviewSize(width,height,camera.parameters)”返回的尺寸太小,以至于标准 decodeYUV420SP 方法因空指针异常而失败。

一些调试显示我的 DroidX 支持的PreviewSizes 是:

  • 144h x 176w
  • 240h x 320w
  • 288h x 352w
  • 480h x 640w
  • 480h x 720w
  • 448h x 800w
  • 720h x 1280w

请注意,高度和宽度的值给出了横向视角。这不会随相机方向而改变。传递给 getBestSupportedPreviewSizes 的表面的宽度和高度为 480w x 778h。

当我将 camera.parameters 传递给 getBestSupportedPreviewSizes() 时,它会返回 288 x 352 大小。这是调用代码 - 如果格式关闭,我很抱歉,但这里是:

      if (!cameraConfigured) {
        Camera.Parameters parameters=camera.getParameters();
        Camera.Size size=getBestPreviewSize(pwidth, pheight, parameters);
        if (size!=null) {
          parameters.setPreviewSize(size.width, size.height);
          camera.setParameters(parameters);
          cameraConfigured=true;
        }
    }

pwidthpheight 来自 surfaceChanged 回调的宽度和高度参数。 我试过 camera.setDisplayOrientation(90);在 onResume() 中。我还在 list 中添加了方向(“Portrait”) - 这些尝试的 4 种组合似乎都没有改变这种行为。

我的想法是简单地颠倒它们,但在很多层面上感觉都是错误的。由于这个免费提供的代码似乎已经在许多其他示例中证明了自己,我显然是错误地接近它。任何人都可以对这种行为提供一些见解吗?

提前致谢。

最佳答案

考虑相机的正确方法是在横向模式下,这意味着当您在纵向模式下考虑相机时,宽度和高度会感觉“翻转”。

getBestPreviewSize(w, h, p) 函数只是 Camera.ParametersgetSupportedPreviewSizes() 函数的包装,所以传入的宽度和高度不会改变 bestPreviewSize 函数的结果。

关于android - GetSupportedPreviewSize 返回反向宽度和高度,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11276924/

相关文章:

android - 在Android Studio中构建统一项目(具有Firebase)时出错

android - 在pjsip android中从前到后切换相机

android - 对相机拍摄的视频帧应用效果

javascript - 如何创建JavaScript条件以显示视频的图像预览或图片的图像预览?

android:当我从我的电脑运行时,谷歌地图 v2 不工作

java - 用while循环更新textView?

android - 在 Android 中实现文本更改的搜索功能

android - CameraX 等效于 Camera2 的 CaptureRequest

android - 在 Android Studio 中渲染时不支持 major.minor 版本 52.0

html - 图片预览框