Java 运行时出现Android NullPointerException错误

Java 运行时出现Android NullPointerException错误,java,android,xml,Java,Android,Xml,我正在开发一个简单的摄像头应用程序,它基于android开发者教程,但在运行时遇到了一些问题 这是我的日志打印输出 现在,我已经在CameraPreview中的第30行跟踪了NullPointerException,您可能已经了解到了这一点,因此CameraPreview的代码如下所示。我可以用Java编写代码,并且知道空指针是指还没有创建但据我所知已经创建的东西 public class CameraPreview extends SurfaceView implements Surface

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

这是我的日志打印输出

现在,我已经在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)

从中可以看出,在“全局”变量
private Camera mCamera
中有一个mCamera实例

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

谢谢, 丹


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

在哪里创建了
CameraPreview

看起来像是新的CameraPreview(上下文,null)

您必须确保
CameraPreview
未获取
null
-摄像机

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()
方法是什么?

使用
Camera android.hardware.Camera.open()
在开始活动时初始化摄像头。

mCamera=Camera

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

如果(摄像机==null){

Log.e(“摄像头”,“我的摄像头为空…”)

}


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

post logcat errors.not imageWaht关于您调用该类的位置???@Robert您指的是哪一类照相机?因为这是从android.hardware.Camera导入的…我相信你的mCamera实例是空的,请检查它是否正确初始化。CameraPreview肯定是在我的构造函数中创建的吗?在你的文章中,什么是
CameraPreview
getCameraInstance()
的第二个参数。发布此方法。是否
Camera.open()
引发异常?@DanielD发布将Camera传递给CameraPreview的方法,我会看一看。Camera和CameraPreview唯一的位置是在我的构造函数中?@DanielD将变量传递给CameraPreview,它必须在某个地方。(例如,
CameraPreview cp=new CameraPreview(context,camera)
public void onCreate(Bundle savedInstanceState){super.onCreate(savedInstanceState);setContentView(R.layou.activity_camera_demo);//获取camera=getCameraInstance()的实例);//创建预览视图并将其设置为活动的内容。mPreview=new CameraPreview(this,mCamera);FrameLayout Preview=(FrameLayout)findViewById(R.id.camera_Preview);Preview.addView(mPreview);这是在CameraDemo.java中。这就是你的意思吗?@DanielD是的,就是它。我现在来看看。这会在我的代码中,即主应用程序类中的onCreate方法?即CameraDemo?在实例化CameraPreview的地方,使用该函数传递摄影机。