2013-03-06 25 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的構造函數並將其保存到私有變量等)

相關問題