【发布时间】:2013-07-22 04:13:04
【问题描述】:
我根据教程创建了一个相机应用程序。我使用的预览类来自 api-Demos“CameraPreview”。我从here 添加了一个修改(预览总是旋转90°)。所以这就是我设置预览大小的方式:
public void surfaceChanged(SurfaceHolder holder, int format, int w, int h) {
// Now that the size is known, set up the camera parameters and begin
// the preview.
Camera.Parameters parameters = mCamera.getParameters();
Display display = ((WindowManager) getContext().getSystemService(Context.WINDOW_SERVICE)).getDefaultDisplay();
if (display.getRotation() == Surface.ROTATION_0) {
parameters.setPreviewSize(mPreviewSize.height, mPreviewSize.width);
mCamera.setDisplayOrientation(90);
}
if (display.getRotation() == Surface.ROTATION_90) {
parameters.setPreviewSize(mPreviewSize.width, mPreviewSize.height);
}
if (display.getRotation() == Surface.ROTATION_180) {
parameters.setPreviewSize(mPreviewSize.height, mPreviewSize.width);
}
if (display.getRotation() == Surface.ROTATION_270) {
parameters.setPreviewSize(mPreviewSize.width, mPreviewSize.height);
mCamera.setDisplayOrientation(180);
}
parameters.setPreviewSize(mPreviewSize.width, mPreviewSize.height);
requestLayout();
mCamera.setParameters(parameters);
mCamera.startPreview();
}
但预览显示的纵横比错误。是因为上面的代码还是因为我使用的布局?:
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent" >
<Button
android:id="@+id/button_capture"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_alignParentBottom="true"
android:text="@string/capture" />
<FrameLayout
android:id="@+id/camera_preview"
android:layout_width="100dp"
android:layout_height="match_parent"/>
那么如何获得正确的纵横比呢?提前致谢。
附:我从以下位置阅读答案:Android camera preview look strange 但这对我不起作用。
【问题讨论】:
-
也许你可以关闭这个问题?
-
首先你不必相信,第二我没有时间尝试其他解决方案(发布问题一年后发布)。一旦我尝试了其他答案,我将提供反馈。在那之前一切都很好......