我正在开发一个基于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);
据我所知,“全局”变量
private Camera mCamera
中有一个mCamera实例。任何人有任何想法吗?很抱歉,我尽可能地格式化了一个长问题。
谢谢,
担
附言我知道此类中还需要其他方法,这仅仅是“问题代码段”。
最佳答案
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()
方法是什么?