0

前景相机插件设置为横向默认如何将相机设置为纵向?我将 xml 设置为纵向,但似乎找不到如何更改相机预览方向。

更新:添加了以下内容来修复 lanscape

Camera.Parameters parameters = mCamera.getParameters();
parameters.setPictureFormat(PixelFormat.JPEG); 
parameters.set("orientation", "portrait");
parameters.setRotation(90);
mCamera.setParameters(parameters);
mCamera.setDisplayOrientation(90);

这是我当前创建方形预览的代码

getWindowManager().getDefaultDisplay().getMetrics(displaymetrics);  
int wwidth = displaymetrics.widthPixels;
mFrameLayout.getLayoutParams().height = wwidth;
mFrameLayout.getLayoutParams().width = wwidth;

但是预览被拉伸,图片似乎被拉伸。

  1. 如何获得不会拉伸视图的特定宽度所需的高度?

  2. 我可以隐藏底部多余的部分吗?(因为拍照后会被裁剪掉)

  3. 还发现相机似乎被放大了,拍摄的照片和你在预览中看到的不一样,它有更多的内容。

谁能给我一些提示?

谢谢

4

1 回答 1

1

要修复更改方向时的拉伸,请在调用 mCamera.setPreviewDisplay() 之前将这些行添加到 ForegroundCameraPreview.java 文件中的“surfaceChanged”方法

android.hardware.Camera.CameraInfo info = new android.hardware.Camera.CameraInfo();
android.hardware.Camera.getCameraInfo(Camera.CameraInfo.CAMERA_FACING_BACK, info);
int rotation = mActivity.getWindowManager().getDefaultDisplay().getRotation();
int degrees = 0;
switch (rotation) {
    case Surface.ROTATION_0: degrees = 0; break;
    case Surface.ROTATION_90: degrees = 90; break;
    case Surface.ROTATION_180: degrees = 180; break;
    case Surface.ROTATION_270: degrees = 270; break;
}    
int result;
result = (info.orientation - degrees + 360) % 360;

mCamera.setDisplayOrientation(result);

您需要从 CameraActivity 获取活动(mActivity)(例如将其传递给 ForegroundCameraPreview 的构造函数并将其保存到私有变量等)

于 2013-11-21T18:36:27.423 回答