【发布时间】:2018-12-07 17:51:30
【问题描述】:
在更新我们的应用程序后,我们现在使用 Camera2 API,不幸的是,预览在我们的测试设备上被拉伸:Samsung SM-J330F/DS,Android-Version 8.0.0,API 26
因为我们在同一设备上使用 Google 的 Camera2Basic 项目没有遇到此问题,所以我们尝试调整我们的项目以使用相同的预览实现。目前我们只是无法弄清楚两个项目之间的预览不同的确切原因。
这是预期的:
与 Camera2Basic 项目相比,我们的 RelativeLayout 是在 Activity 类中以编程方式创建的,然后将 AutoFitTextureView 添加到此对象中:
mMainLayout = new FrameLayout(this);
mMainLayout.setBackgroundColor(Color.BLACK);
mMainLayout.setLayoutParams(new LayoutParams(LayoutParams.MATCH_PARENT,
LayoutParams.MATCH_PARENT));
mPreview = new AutoFitTextureView(this);
mPreview.setLayoutParams(new FrameLayout.LayoutParams(LayoutParams.MATCH_PARENT,
LayoutParams.MATCH_PARENT, Gravity.TOP));
mMainLayout.addView(mPreview);
this.setContentView(mMainLayout);
AutoFitTextureView 的实现与 Camera2Basic 项目中的相同。
稍后在 Camera2 类中将 setUpCameraOutputs() 中的预览设置为 640x480 像素(所有设备都应支持的分辨率)后,我们在 mPreview 上调用 setAspectRatio(width, height):
mPreviewSize = new Size(640, 480);
if (mFrameOrientation == Configuration.ORIENTATION_LANDSCAPE) {
mTextureView.setAspectRatio(
mPreviewSize.getWidth(), mPreviewSize.getHeight()
);
} else {
mTextureView.setAspectRatio(
mPreviewSize.getHeight(), mPreviewSize.getWidth()
);
}
注意:在较新的设备(如荣耀 10)上,预览效果也不错。
【问题讨论】:
标签: java android android-camera android-camera2