2010-07-19 52 views
1

出於某種原因,我的程序中的攝像機饋送是橫向的。如果我將手指從底部按住相機,它會在曲面視圖中顯示爲來自右側。SurfaceView正在側面顯示攝像機饋送

我有一個非常標準的實施

surfaceView = (SurfaceView)findViewById(R.id.surfaceView); 
    surfaceHolder = surfaceView.getHolder(); 
    surfaceHolder.addCallback(surfaceCallback); 
    surfaceHolder.setType(SurfaceHolder.SURFACE_TYPE_PUSH_BUFFERS); 

我環顧四周,但我似乎無法找到這方面的消息。我的設備是一個nexus One。

編輯:如果我將屏幕方向設置爲橫向然後它由於某種原因正常工作...雖然不能在縱向獲取它。

+0

我有這個問題而回,以及和很少抽時間去解決它。我真的不認爲問題出現在您發佈的代碼中 – 2010-07-19 17:43:41

回答

1

預覽顯示圖像的方向由Camera.setDisplayOrientation(int)方法控制。對於我的Evo,將方向設置爲90使預覽顯示對於縱向模式是正確的。

... 
camera.setParameters(parameters); 
camera.setDisplayOrientation((orientation+90)%360); 
camera.startPreview(); 
... 

似乎在預覽開始後改變方向會導致異常。如果更改旋轉電話/設備,則將再次調用SurfaceHolder.surfaceChanged回調,如果在該回調中執行setDisplayOrientation和startPreview,則會發生異常。我是,試着停止預覽,然後改變方向然後重新開始。

注意:還有Camera.Parameters.setRotation(int)方法,(我認爲)在拍攝照片時將圖像寫入(JPEG)輸出圖像時改變圖像的方向。此方法不會更改預覽顯示方向。

0

使用此行

mCamera.setDisplayOrientation(90); 

在surfaceCreated方法之後

mCarmera.open(); 
相關問題