有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

运行时出现java Android NullPointerException错误

我正在开发一个简单的摄像头应用程序,它基于安卓开发者教程,但在运行时遇到了一些问题

这是我的日志打印输出

enter image description here

现在,我已经在CameraPreview中的第30行跟踪了NullPointerException,您可能已经了解到了这一点,因此CameraPreview的代码如下所示。我可以用Java编写代码,并且知道空指针是指还没有创建但据我所知已经创建的东西

public class CameraPreview extends SurfaceView implements SurfaceHolder.Callback{
private SurfaceHolder mHolder;
private Camera mCamera;
private static final String TAG = "Preview";

@SuppressWarnings("deprecation")
public CameraPreview(Context context, Camera camera){
    super(context);
    mCamera = camera;

    //Install callback to get notifications from the app
    mHolder = getHolder();
    mHolder.addCallback(this);
    mHolder.setType(SurfaceHolder.SURFACE_TYPE_PUSH_BUFFERS); //deprecated but required for Android Version 3.0 and under
}

public void surfaceCreated(SurfaceHolder holder) {
    //Surface been created now need to tell app where to draw PREVIEW
            try{
                mCamera.setPreviewDisplay(holder);
                mCamera.startPreview();
            }
            catch(IOException e){
                Log.d(TAG, "Camera preview error: " + e.getMessage());
            }

}

第30行是这里的代码片段-mCamera.setPreviewDisplay(holder);

从中我可以看出,在'global'变量private Camera mCamera中有一个mCamera实例

有人有什么想法吗?对不起,这是一个很长的问题,我已经尽力了

谢谢, 丹

另外,我知道这个类还需要其他方法,这只是“问题片段”


共 (4) 个答案

  1. # 1 楼答案

    public CameraPreview(Context context, Camera camera){
        super(context);
        mCamera = camera;
    

    看起来camera正在以null形式传递给CameraPreview


    确保你的舱单上有这些信息:

    <uses-permission android:name="android.permission.CAMERA" />
    <uses-feature android:name="android.hardware.camera" />  
    <uses-feature android:name="android.hardware.camera.autofocus" /> 
    

    还有,你的getCameraInstance()方法是什么

  2. # 2 楼答案

    在哪里创建CameraPreview

    看起来像new CameraPreview(context, null)

    你必须确保CameraPreview没有null摄像头

  3. # 3 楼答案

    开始活动时,使用Camera android.hardware.Camera.open()初始化相机

  4. # 4 楼答案

    mCamera=摄像机

    在这一行,你的“相机”对象可能是空的。。。。所以先检查一下。。。 就像

    如果(摄像头==null){

    日志。e(“摄像头”,“我的摄像头为空…”)

    }

    试试这个。。。。通过这种方式,您可以找到空指针出现的确切位置