2014-04-09 42 views
2

畫面的設置方向這是surfaceView用於拍攝照片MT代碼:相機上SurfaceView:採取

@Override 
public void surfaceCreated(SurfaceHolder holder) { 
    mCamera = Camera.open(); 

    try { 
     mCamera.setPreviewDisplay(holder); 
     mCamera.setDisplayOrientation(90); 


    } catch (IOException exception) { 
     mCamera.release(); 
     mCamera = null; 
    } 

} 

@Override 
public void surfaceChanged(SurfaceHolder holder, int format, int width, 
     int height) { 
    Camera.Parameters params = mCamera.getParameters(); 
    Camera.Size result = getBestPreviewSize(params, width, height); 
    params.setPreviewSize(result.width, result.height); 

    params.setPictureFormat(ImageFormat.JPEG); 
    params.setJpegQuality(100); 
    mCamera.setParameters(params); 

    mCamera.startPreview(); 

} 

圖片的預覽處於縱向模式,但圖像保存在我的存儲旋轉。我如何用預覽的相同方向保存圖片?

+0

嗨。你有沒有設法解決這個問題? – Labe

回答

0

在您的活動聲明旋轉作爲靜態int變量

旋轉= getWindowManager()getDefaultDisplay()getRotation()。;

然後添加攝像頭預覽類此行

if(YourActivityname.rotation == 0 || YourActivityname.rotation == 180) 
     this.mCamera.setDisplayOrientation(90); 
    else 
     this.mCamera.setDisplayOrientation(0); 

請參閱本 http://developer.android.com/reference/android/hardware/Camera.Parameters.html#setRotation%28int%29

公共無效setRotation(INT旋轉)

+0

我的設備上的旋轉被鎖定,並且還帶有您的代碼,圖片始終保存爲旋轉。但使用setDisplayOrientation,我只需在surfaceView – giozh

+0

上設置攝像頭預覽的方向,請參閱該鏈接 –

1

我有同樣的問題,但我解決它,而把一個單一的代碼行 surfaceChanged方法

params.setRotation(90);

你的代碼改成這樣:

public void surfaceChanged(SurfaceHolder holder, int format, int width,int height) { 
    Camera.Parameters params = mCamera.getParameters(); 
    Camera.Size result = getBestPreviewSize(params, width, height); 
    params.setPreviewSize(result.width, result.height); 

    params.setRotation(90) ***//Just add this single line of code*** 

    params.setPictureFormat(ImageFormat.JPEG); 
    params.setJpegQuality(100); 
    mCamera.setParameters(params); 

    mCamera.startPreview(); 

} 
相關問題