0

我正在开发一个基于 android 开发人员教程的简单相机应用程序,但我在运行它时遇到了一些问题。

这是我的 LogCat 打印输出。

在此处输入图像描述

现在我已经追踪到 NullPointerException 位于 CameraPreview 的第 30 行,正如您可能已经想到的那样,CameraPreview 的代码如下。我可以用 Java 编写代码,并且知道 NullPointer 是指存在尚未创建但据我所知已经创建的东西。

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);

据我所知,“全局”变量中有一个 mCamera 实例private Camera mCamera

有人有什么想法吗?抱歉,这是一个尽可能格式化的长问题。

谢谢,丹

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

4

4 回答 4

1

在哪里CameraPreview创建?

看起来像new CameraPreview(context, null)

你必须确保CameraPreview得到的不是null相机。

于 2012-08-01T11:23:39.487 回答
1
public CameraPreview(Context context, Camera camera){
    super(context);
    mCamera = camera;

看起来像camera被传递给CameraPreviewnull。


确保您的清单中有这些:

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

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

于 2012-08-01T11:25:05.417 回答
0

用于Camera android.hardware.Camera.open()在您开始活动时初始化相机。

于 2012-08-01T11:26:25.300 回答
-1

mCamera = 相机。

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

如果(相机==空){

Log.e("Camera","我的相机是空的...");

}

试试这个......这样你就可以找到 nullPointer 出现的确切位置......

于 2012-08-01T11:27:42.407 回答