handle setting changes that may fail by using setParameters()

pull/59/merge^2
Tim H 8 years ago
parent f9feb8a4d3
commit d663d98176
  1. 61
      cameraview/src/main/java/com/otaliastudios/cameraview/Camera1.java

@ -286,6 +286,7 @@ class Camera1 extends CameraController {
@Override
void setLocation(Location location) {
try {
Location oldLocation = mLocation;
mLocation = location;
if (isCameraAvailable()) {
@ -295,6 +296,12 @@ class Camera1 extends CameraController {
}
}
}
catch (Exception e) {
CameraException cameraException =
new CameraConfigurationFailedException("Failed to set the location.", e);
mCameraCallbacks.onError(cameraException);
}
}
private boolean mergeLocation(Camera.Parameters params, Location oldLocation) {
if (mLocation != null) {
@ -324,6 +331,7 @@ class Camera1 extends CameraController {
@Override
void setWhiteBalance(WhiteBalance whiteBalance) {
try {
WhiteBalance old = mWhiteBalance;
mWhiteBalance = whiteBalance;
if (isCameraAvailable()) {
@ -333,6 +341,13 @@ class Camera1 extends CameraController {
}
}
}
catch (Exception e) {
// TODO handle, !mergeWhiteBalance, too?
CameraException cameraException =
new CameraConfigurationFailedException("Failed to set the white balance.", e);
mCameraCallbacks.onError(cameraException);
}
}
private boolean mergeWhiteBalance(Camera.Parameters params, WhiteBalance oldWhiteBalance) {
if (mOptions.supports(mWhiteBalance)) {
@ -345,6 +360,7 @@ class Camera1 extends CameraController {
@Override
void setHdr(Hdr hdr) {
try {
Hdr old = mHdr;
mHdr = hdr;
if (isCameraAvailable()) {
@ -354,6 +370,13 @@ class Camera1 extends CameraController {
}
}
}
catch (Exception e) {
// TODO handle, !mergeHdr, too?
CameraException cameraException =
new CameraConfigurationFailedException("Failed to set hdr.", e);
mCameraCallbacks.onError(cameraException);
}
}
private boolean mergeHdr(Camera.Parameters params, Hdr oldHdr) {
if (mOptions.supports(mHdr)) {
@ -377,6 +400,7 @@ class Camera1 extends CameraController {
@Override
void setFlash(Flash flash) {
try {
Flash old = mFlash;
mFlash = flash;
if (isCameraAvailable()) {
@ -386,6 +410,13 @@ class Camera1 extends CameraController {
}
}
}
catch (Exception e) {
// TODO handle, !mergeFlash, too?
CameraException cameraException =
new CameraConfigurationFailedException("Failed to set flash.", e);
mCameraCallbacks.onError(cameraException);
}
}
private boolean mergeFlash(Camera.Parameters params, Flash oldFlash) {
@ -427,12 +458,12 @@ class Camera1 extends CameraController {
@Override
void setVideoQuality(VideoQuality videoQuality) {
try {
if (mIsCapturingVideo) {
// TODO: actually any call to getParameters() could fail while recording a video.
// See. https://stackoverflow.com/questions/14941625/correct-handling-of-exception-getparameters-failed-empty-parameters
CameraException cameraException = new CameraConfigurationFailedException("Can't change video quality while recording a video.");
mCameraCallbacks.onError(cameraException);
return;
throw new IllegalStateException("Can't change video quality while recording a video.");
}
mVideoQuality = videoQuality;
@ -454,6 +485,12 @@ class Camera1 extends CameraController {
LOG.i("setVideoQuality:", "previewSize:", mPreviewSize);
}
}
catch (Exception e) {
CameraException cameraException =
new CameraConfigurationFailedException("Failed to set video quality.", e);
mCameraCallbacks.onError(cameraException);
}
}
@Override
boolean capturePicture() {
@ -782,6 +819,7 @@ class Camera1 extends CameraController {
@Override
boolean setZoom(float zoom) {
try {
if (!isCameraAvailable()) return false;
if (!mOptions.isZoomSupported()) return false;
synchronized (mLock) {
@ -792,10 +830,19 @@ class Camera1 extends CameraController {
}
return true;
}
catch (Exception e) {
CameraException cameraException =
new CameraConfigurationFailedException("Failed to set zoom.", e);
mCameraCallbacks.onError(cameraException);
return false;
}
}
@Override
boolean setExposureCorrection(float EVvalue) {
try {
if (!isCameraAvailable()) return false;
if (!mOptions.isExposureCorrectionSupported()) return false;
float max = mOptions.getExposureCorrectionMaxValue();
@ -809,6 +856,14 @@ class Camera1 extends CameraController {
}
return true;
}
catch (Exception e) {
CameraException cameraException =
new CameraConfigurationFailedException("Failed to set exposure correction.", e);
mCameraCallbacks.onError(cameraException);
return false;
}
}
// -----------------
// Tap to focus stuff.

Loading…
Cancel
Save