【问题标题】:Camera preview still black相机预览还是黑的
【发布时间】:2020-04-01 01:22:04
【问题描述】:

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

        }
    };
}

}

谁能给我一些解释为什么它给我黑屏?

【问题讨论】:

    标签: android android-camera


    【解决方案1】:

    也可以参考这个Link

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

    【讨论】:

      【解决方案2】:

      也许你正受到androidCamera bug这个bug的影响。

      这里提出的解决方法Work around

      希望对你有帮助..

      【讨论】:

      • 我知道它很晚,但您的回答和解决方法与问题无关,因为这是自定义相机的情况,并且不涉及此意图。
      【解决方案3】:

      我刚刚发现了一个与黑色相机预览有关的奇怪问题。 就我而言,事实证明是因为我有清单选项

      PARTIAL_WAKE_LOCK 以及 REQUEST_INSTALL_PACKAGES

      <uses-permission android:name="android.permission.PARTIAL_WAKE_LOCK"/>
      <uses-permission android:name="android.permission.REQUEST_INSTALL_PACKAGES"/>
      

      我不知道为什么这些会像这样影响相机 - 或者它是否只是与我正在使用的设备有关 - 但删除这些权限解决了我的问题。我花了 2 个小时来剥离一个项目,才弄清楚问题出在哪里!

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2013-05-20
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2018-06-17
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多