Refactored the code a bit so that the opening and closing of the camera occur in the cameraHolder onSurfaceChanged method. This allows the calling activity to basically just make a surface and implement the PictureReadyListener interface, and everything else is accounted for. This also allows the camera to be properly released and re-opened when the app closes and opens.