空指针异常.
通常由使用空值造成,由未初始化对象产生.
在做foxbox 这个项目的spycamera模块时, 当不打开预览(则 Camera对象未初始化) 直接返回主菜单时,surfaceDestroyed 弹出该异常.
因为此函数
public void surfaceDestroyed(SurfaceHolder surfaceholder)
{
mCamera01.stopPreview();
mCamera01.release();
mCamera01 = null;
try
{
delFile(strCaptureFilePath);
}
catch(Exception e)
{
e.printStackTrace();
}
Log.i(TAG,"surface Destroyed");
}
操作了未初始化的mCamera01 对象.
解决方法: 设置 boolean isinited =false;
当预览打开,即初始化相机时 isinited =1;
在 surfaceDestroyed 添加语句
public void surfaceDestroyed(SurfaceHolder surfaceholder)
{
if(isinited==false)
mCamera01=Camera.open();
mCamera01.stopPreview();
mCamera01.release();
mCamera01 = null;
try
{
delFile(strCaptureFilePath);
}
catch(Exception e)
{
e.printStackTrace();
}
Log.i(TAG,"surface Destroyed");
}