Android相机X预览视图:如何获得PreviewView高度?

bybem2ql  于 2023-01-15  发布在  Android
关注(0)|答案(1)|浏览(305)

我的预览视图占据了父布局的整个宽度和高度,但在启动相机时,我将预览的纵横比设置为AspectRatio.RATIO_16_9。因此,在我的预览视图的顶部和底部有一些空白空间。
我的问题是:我如何得到实际摄像头的边界?2我需要在顶部覆盖一些自定义视图,因此我需要知道摄像头的尺寸。

    • 编辑:**scaleType是"fitCenter"。这是预期的。自定义视图覆盖需要显示在摄像机提要的顶部,忽略空白空间。摄像机提要不需要全屏。我希望它是16:9的比例。我的用例包括绘制面部检测的面部边界,在捕捉图像时绘制3x3网格线。因此网格线只需要延伸到摄像机预览结束的边界,不考虑周围的空白空间。

例如,下面是我的相机屏幕。紫色矩形表示预览视图边界,红色矩形是我需要的边界。

z9smfwbn

z9smfwbn1#

你必须自己计算它。假设流的长宽比是16:9,PreviewView的尺寸是(viewW,viewH),那么你可以这样计算边界框:

if (viewW/viewH >9/16) {
  streamH = viewH
  streamW = viewH/16*9
  left = (viewW - streamW)/2
  top = 0
} else {
  streamW = viewW
  streamH = viewW/9*16
  left = 0
  top = (viewH - streamH)/2
}

rect = (left, top, left + streamW, top + streamH)

该代码未经测试。

相关问题