try {
mFocusToneGenerator = new ToneGenerator(
AudioManager.STREAM_SYSTEM, FOCUS_BEEP_VOLUME);
- } catch (RuntimeException e) {
- Log.w(TAG, "Exception caught while creating local tone generator: "
- + e);
+ } catch (Throwable ex) {
+ Log.w(TAG, "Exception caught while creating tone generator: ", ex);
mFocusToneGenerator = null;
}
}
// this blanks the screen if the surface changed, no-op otherwise
try {
mCameraDevice.setPreviewDisplay(mSurfaceHolder);
- } catch (IOException exception) {
- CameraHolder.instance().release();
- mCameraDevice = null;
- // TODO: add more exception handling logic here
- return;
+ } catch (Throwable ex) {
+ closeCamera();
+ throw new RuntimeException("setPreviewDisplay failed", ex);
}
setCameraParameter();
try {
mCameraDevice.startPreview();
- } catch (Throwable e) {
- // TODO: change Throwable to IOException once
- // android.hardware.Camera.startPreview properly declares
- // that it throws IOException.
+ } catch (Throwable ex) {
+ closeCamera();
+ throw new RuntimeException("startPreview failed", ex);
}
mPreviewing = true;
}
// Precondition: mSurfaceHolder != null
- // Returns true if starting preview succeeds.
- private boolean startPreview() {
+ private void startPreview() {
findViewById(R.id.review_indicator).setVisibility(View.INVISIBLE);
findViewById(R.id.video_indicator).setVisibility(View.VISIBLE);
Log.v(TAG, "startPreview");
if (mPreviewing) {
// After recording a video, preview is not stopped. So just return.
- return true;
+ return;
}
if (mCameraDevice == null) {
setCameraParameters();
try {
mCameraDevice.setPreviewDisplay(mSurfaceHolder);
- } catch (IOException ex) {
- CameraHolder.instance().release();
- mCameraDevice = null;
- Log.e(TAG, "failed to set preview display");
- return false;
+ } catch (Throwable ex) {
+ closeCamera();
+ throw new RuntimeException("setPreviewDisplay failed", ex);
}
try {
mCameraDevice.startPreview();
mPreviewing = true;
} catch (Throwable ex) {
- // TODO: change Throwable to IOException once
- // android.hardware.Camera.startPreview properly declares
- // that it throws IOException.
- CameraHolder.instance().release();
- mCameraDevice = null;
- Log.e(TAG, "failed to start preview");
- return false;
+ closeCamera();
+ throw new RuntimeException("startPreview failed", ex);
}
mCameraDevice.unlock();
- return true;
}
private void closeCamera() {