2013-03-06 26 views
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. 此外,发现相机似乎被缩放,拍摄的照片与预览中看到的照片不一样,它具有更多内容。

任何人都可以给我一些提示吗?

感谢

回答

1

要解决的拉伸上改变方向,这些线路在ForegroundCameraPreview.java文件添加到“surfaceChanged”方法,在调用mCamera.setPreviewDisplay()

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获取活动(mAA)(例如,将其传递给ForegroundCameraPreview的构造函数并将其保存到私有变量等)

相关问题