【发布时间】:2019-02-05 15:51:14
【问题描述】:
正如我在标题中所说,这对我来说没有任何意义。应该返回宽度的方法返回 1920,应该返回高度的方法返回 1080。我做错了什么吗?
我的相机活动被锁定为纵向模式。我的手机是三星 Note 4。由于我的手机处于纵向模式并锁定在该方向,我的高度应该是 1920,宽度应该是 1080,但是当我不将相机活动锁定在纵向模式时,它仍然返回错误值,但是当它变成横向模式时,高度为1080,宽度为1920。
我的代码:
mPreviewSize =
chooseOptimalSize(map.getOutputSizes(SurfaceTexture.class), rotatedWidth,
rotatedHeight);
private static Size chooseOptimalSize(Size[] choices, int width, int
height) {
List<Size> bigEnough = new ArrayList<Size>();
for(Size option : choices) {
Log.d("detectivepikachu","option: h: "+option.getHeight()+" w:
"+option.getWidth());
if(option.getHeight() == option.getWidth() * height / width &&
option.getWidth() >= width && option.getHeight() >=
height) {
bigEnough.add(option);
}
}
if(bigEnough.size() > 0) {
return Collections.min(bigEnough, new CompareSizeByArea());
} else {
return choices[0];
}
}
【问题讨论】:
-
相机方向可能不同
-
检查 Exif 数据以获取方向信息,您可能需要旋转图像。
标签: android android-camera android-camera2