android - 相机预览仍然是黑色

标签 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();

        }
    };
}

}

谁能给我一些解释,为什么它会出现黑屏?

最佳答案

另请参阅 Link

您过早调用最后三行。在调用 setPreviewDisplay() 之前必须等待表面准备好,并且在调用 startPreview() 之前必须等待表面调整大小 (surfaceChanged())。 This project有你需要的。

关于android - 相机预览仍然是黑色,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8641736/

相关文章:

在某些 6.0 设备上解码 png 图像时,Android native 崩溃

android - android 的默认图库和相机 Intent 是否适用于所有设备?

android - 为什么在 Android 上,OpenCV 摄像头在捕获视频时比 Android 摄像头更快

android - 使用相机捕捉文本。安卓?

android - ZXing 自动对焦问题

android - 跨平台 openGLES?

python - 如果窗口大小不够大,如何在 kivy 中使标签转到下一行

android - Pusher Android 订阅 channel 两次

android - 如何使用 Dagger 2.11 注入(inject)模拟

android - 如何在 Android 中的相机捕获图像上设置实时帧