2011-12-27 11 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

ありがとうdaneel。私は試して、それは仕事です。 – DevYudh

8

また、このLink

あなたはあまりにも早く最後の3行を呼び出している参照してください。 setPreviewDisplay()を呼び出す前にサーフェスを準備するのを待たなければならず、startPreview()を呼び出す前にサーフェスのサイズを待つ(surfaceChanged())必要があります。 This projectに必要なものがあります。

関連する問題