@@ -393,7 +393,7 @@ public CameraSource start(SurfaceHolder surfaceHolder) throws IOException {
393393 mCamera = createCamera ();
394394 mCamera .setPreviewDisplay (surfaceHolder );
395395 mCamera .startPreview ();
396-
396+
397397 mCanTakePicture = true ;
398398
399399 mProcessingThread = new Thread (mFrameProcessor );
@@ -429,7 +429,7 @@ public void stop() {
429429
430430 // clear the buffer to prevent oom exceptions
431431 mBytesToByteBuffer .clear ();
432-
432+
433433 mCanTakePicture = false ;
434434
435435 if (mCamera != null ) {
@@ -532,9 +532,9 @@ public int doZoom(float scale) {
532532 public void takePicture (ShutterCallback shutter , PictureCallback jpeg ) {
533533 synchronized (mCameraLock ) {
534534 if (mCamera != null && mCanTakePicture ) {
535-
535+
536536 mCanTakePicture = false ; // Preview is suspended until we're done
537-
537+
538538 PictureStartCallback startCallback = new PictureStartCallback ();
539539 startCallback .mDelegate = shutter ;
540540 PictureDoneCallback doneCallback = new PictureDoneCallback ();
@@ -575,8 +575,8 @@ public boolean setFocusMode(@FocusMode String mode) {
575575 synchronized (mCameraLock ) {
576576 if (mCamera != null && mode != null ) {
577577 Camera .Parameters parameters = mCamera .getParameters ();
578- final List <String > supportedFlashModes = parameters .getSupportedFlashModes ();
579- if (supportedFlashModes != null && supportedFlashModes .contains (mode )) {
578+ final List <String > supportedFocusModes = parameters .getSupportedFlashModes ();
579+ if (supportedFocusModes != null && supportedFocusModes .contains (mode )) {
580580 parameters .setFocusMode (mode );
581581 mCamera .setParameters (parameters );
582582 mFocusMode = mode ;
@@ -629,6 +629,12 @@ public boolean setFlashMode(@FlashMode String mode) {
629629 }
630630 }
631631
632+ public boolean isModeSupported (String mode ) {
633+ Camera .Parameters parameters = mCamera .getParameters ();
634+ final List <String > supportedModes = parameters .getSupportedFlashModes ();
635+ return supportedModes != null && supportedModes .contains (mode );
636+ }
637+
632638 /**
633639 * Starts camera auto-focus and registers a callback function to run when
634640 * the camera is focused. This method is only valid when preview is active
@@ -828,8 +834,8 @@ private Camera createCamera() {
828834 setRotation (camera , parameters , mRequestedCameraId );
829835
830836 if (mFocusMode != null ) {
831- final List <String > supportedFlashModes = parameters .getSupportedFlashModes ();
832- if (supportedFlashModes != null && supportedFlashModes .contains (mFocusMode )) {
837+ final List <String > supportedFocusModes = parameters .getSupportedFlashModes ();
838+ if (supportedFocusModes != null && supportedFocusModes .contains (mFocusMode )) {
833839 parameters .setFocusMode (mFocusMode );
834840 } else {
835841 Log .i (TAG , "Camera focus mode: " + mFocusMode + " is not supported on this device." );
0 commit comments