相机预览仍为黑色

Dev*_*udh 4 android android-camera

我在我的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();

        }
    };
}

}
Run Code Online (Sandbox Code Playgroud)

有人可以给我一些解释为什么它给我黑屏?

小智 10

另请参阅此链接

你过早地调用最后三行.在调用setPreviewDisplay()之前必须等待表面准备好,并且在调用startPreview()之前必须等待表面大小(surfaceChanged()).这个项目有你需要的.


R.d*_*vaw 6

也许你正受到这个android Camera bug的影响.

到这里提出的解决办法围绕工作.

我希望它有帮助..