前景相机插件将相机设置为纵向并修复拉伸预览

时间:2013-03-06 09:11:52

标签: cordova phonegap-plugins

前景相机插件设置为横向默认设置如何将相机设置为纵向?我将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 个答案:

答案 0 :(得分: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的构造函数并将其保存到私有变量等)。