I have an application where I use devices camera.
Now I only release camera in normal flow.
@Override
public void surfaceDestroyed(SurfaceHolder surf
As @CommonsWare suggested, if you want to make sure, that your application releases Camera before crashing you should use Thread.setDefaultUncaughtExceptionHandler().
Or if you're using Bugsense:
private class MyCameraActivity extends Activity implements SurfaceHolder.Callback, ExceptionCallback {
@Override
protected void onCreate(Bundle sSavedInstanceState) {
super.onCreate(sSavedInstanceState);
BugSenseHandler.setExceptionCallback(this);
}
@Override
public void surfaceCreated(SurfaceHolder holder) {
this.camera = open();
try {
camera.setPreviewDisplay(holder);
} catch (IOException e) {
Log.e(TAG, e.getMessage(), e);
}
// other camera stuff
}
@Override
public void surfaceDestroyed(SurfaceHolder surfaceHolder) {
releaseCamera();
}
@Override
public void lastBreath() {
releaseCamera();
}
private void releaseCamera() {
if (camera != null) {
camera.stopPreview();
camera.release();
}
}
}