2011-05-04 5 views
15

안녕 내 응용 프로그램 중 하나에서 카메라를 사용하여 이미지를 캡처하려고합니다. 특별한 것은 정사각형의 미리보기 영역 (그리고 결국 그림)이 필요하다는 것입니다. 나는 그림과 미리보기의 크기를 1 : 1 픽셀 비율로 정의하려고 시도했지만 아무런 이음새도 작동하지 않았습니다. 내가 무엇을해도 그림은 정사각형으로 찌그러져 보입니다.Android 카메라 미리보기 : 1 : 1 화면비, 어떻게?

해결 방법에 대해 알고있는 사람이 누구입니까?

코드 :

public class AddFromCameraActivity extends Activity implements SurfaceHolder.Callback { 
private Camera mCamera; 
private Parameters mParameters; 
private SurfaceView mCameraPreview; 
private SurfaceHolder mSurfaceHolder; 

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.addimagefromcameramain); 
    initialise(); 
    //Testing area 
    mCamera = Camera.open(); 
    mParameters = mCamera.getParameters(); 
    mParameters.setFlashMode(Camera.Parameters.FLASH_MODE_AUTO); 
    mParameters.setFocusMode(Camera.Parameters.FOCUS_MODE_AUTO); 
    mParameters.setJpegQuality(50); 
    mParameters.setJpegThumbnailQuality(50); 
    mParameters.setPictureSize(1024, 1024); 
    //mParameters.setPreviewFormat(ImageFormat.JPEG); 
    mParameters.setJpegThumbnailSize(256, 256); 
    mParameters.setPreviewSize(500, 500); 
    mCamera.setParameters(mParameters); 
} 
private void initialise() 
{ 
    mCameraPreview = (SurfaceView)findViewById(R.id.cameraSurfaceView); 
    mSurfaceHolder = mCameraPreview.getHolder(); 
    mSurfaceHolder.addCallback(this); 
    mSurfaceHolder.setType(SurfaceHolder.SURFACE_TYPE_PUSH_BUFFERS); 
    mSurfaceHolder.setFixedSize(500, 500); 
} 
@Override 
public void surfaceChanged(SurfaceHolder holder, int format, int width, 
     int height) { 

} 
@Override 
public void surfaceCreated(SurfaceHolder holder) { 
    try { 
     mCamera.setPreviewDisplay(mSurfaceHolder); 
     mCamera.startPreview(); 
    } catch (IOException e) { 
     // TODO Auto-generated catch block 
     e.printStackTrace(); 
    } 
} 
@Override 
public void surfaceDestroyed(SurfaceHolder holder) { 
    mCamera.stopPreview(); 
    mCamera.release(); 
} 
@Override 
public void onPause() 
{ 
    mCamera.release(); 
} 
} 

감사

답변

4

당신은 안드로이드 SDK에서 CameraPreview sample 코드를 살펴 수 있습니다. getOptimalPreviewSize 메서드는 다른 카메라 크기를 처리하는 방법을 보여 주며 onLayout 메서드는 활동에서 미리보기 표면을 배치하는 방법을 보여줍니다.

+0

카메라 미리보기 구현을 봤는데 이걸 발견했습니다. 다른 종횡비를 처리하는 것 같습니다. 해봐야 해. https://github.com/pocorall/scaloid-apidemos/blob/master/src/main/java/com/example/android/apis/graphics/CameraPreview.java – akhyar