2011-12-27 2 views
3

Android 애플리케이션에서 카메라 미리보기를 시도하고 있습니다. 실제 장치를 사용하려고하면 화면이 검게 나옵니다.카메라 미리보기가 여전히 검은 색입니다.

이것은 내 코드이며 오류는 발생하지 않지만 화면은 여전히 ​​검은 색입니다. 어떤 아이디어?

import android.app.Activity; 
import android.content.Context; 
import android.graphics.PixelFormat; 
import android.hardware.Camera; 
import android.hardware.Camera.Parameters; 
import android.os.Bundle; 
import android.view.SurfaceHolder; 
import android.view.SurfaceView; 
import android.widget.FrameLayout; 

public class ARrazerNav extends Activity{ 

public void onCreate(Bundle savedInstanceState){ 
    try{ 
     super.onCreate(savedInstanceState); 
     CustomCameraView cv = new CustomCameraView(this.getApplicationContext()); 
     FrameLayout r1 = new FrameLayout(this.getApplicationContext()); 
     setContentView(r1); 
     r1.addView(r1); 
    }catch (Exception e) { 
     // TODO: handle exception 
    } 
} 

public class CustomCameraView extends SurfaceView{ 
    Camera camera; 
    SurfaceHolder previewHolder; 
    public CustomCameraView(Context ctx){ 
     super(ctx); 
     previewHolder.setType(SurfaceHolder.SURFACE_TYPE_PUSH_BUFFERS); 
     previewHolder.addCallback(surfaceHolderListener); 
    } 
    SurfaceHolder.Callback surfaceHolderListener = new SurfaceHolder.Callback(){ 

     public void surfaceDestroyed(SurfaceHolder holder) { 
      // TODO Auto-generated method stub 
      camera.stopPreview(); 
      camera.release(); 
     } 

     public void surfaceCreated(SurfaceHolder holder) { 
      // TODO Auto-generated method stub 
      camera = Camera.open(); 
      try{ 
       camera.setPreviewDisplay(previewHolder); 
      }catch (Throwable th) { 
       // TODO: handle exception 
      } 
     } 

     public void surfaceChanged(SurfaceHolder holder, int format, int width, 
       int height) { 
      // TODO Auto-generated method stub 
      Parameters params = camera.getParameters(); 
      params.setPreviewSize(width, height); 
      params.setPictureFormat(PixelFormat.JPEG); 
      camera.setParameters(params); 
      camera.startPreview(); 

     } 
    }; 
} 

} 

누군가 내게 왜 검은 화면을 제공하는지 설명 할 수 있습니까?

답변

4

아마도이 android Camera bug 버그의 영향을받습니다.

여기에 제안 된 해결 방법은 Work around입니다.

도움이 되었기를 바랍니다.

+1

감사합니다. 나는 노력한다. – DevYudh

8

또한이 Link

당신은 너무 일찍 마지막 세 줄을 호출하는 참조하십시오. setPreviewDisplay()를 호출하기 전에 서페이스가 준비되기를 기다려야하고 startPreview()를 호출하기 전에 서페이스의 크기가 조정될 때까지 기다려야합니다 (surfaceChanged()). This project에 필요한 것이 있습니다.

관련 문제