OSDN Git Service

Merge "Fix for Ripple on Fast Thumbnail Indicator" into ub-camera-haleakala
authorI-Jong Lin <ijonglin@google.com>
Wed, 28 Jan 2015 01:42:50 +0000 (01:42 +0000)
committerAndroid (Google) Code Review <android-gerrit@google.com>
Wed, 28 Jan 2015 01:42:50 +0000 (01:42 +0000)
1  2 
src/com/android/camera/CaptureModule.java

@@@ -141,7 -141,6 +141,7 @@@ public class CaptureModule extends Came
      private boolean mHdrEnabled = false;
  
      private FocusController mFocusController;
 +    private OneCameraCharacteristics mCameraCharacteristics;
  
      /** The listener to listen events from the CaptureModuleUI. */
      private final CaptureModuleUI.CaptureModuleUIListener mUIListener =
                  }
  
                  @Override
-                 public void onThumbnailProcessingBegun() {
+                 public void onThumbnailAvailable(final Bitmap thumbnailBitmap, final int rotation) {
+                     // Call ripple effect when you know that you have the bitmap
+                     // then update bitmap.
                      mMainHandler.post(new Runnable() {
                          @Override
                          public void run() {
                              mAppController.getCameraAppUI().startCaptureIndicatorRevealAnimation(
                                      getPeekAccessibilityString());
-                         }
-                     });
-                 }
-                 @Override
-                 public void onThumbnailAvailable(final Bitmap thumbnailBitmap, final int rotation) {
-                     mMainHandler.post(new Runnable() {
-                         @Override
-                         public void run() {
                              mAppController.getCameraAppUI().updateCaptureIndicatorThumbnail(
                                      thumbnailBitmap, rotation);
                          }
          mMediaActionSound = new MediaActionSound();
      }
  
 +    private void updateCameraCharacteristics() {
 +        try {
 +            mCameraCharacteristics = mCameraManager.getCameraCharacteristics(mCameraFacing);
 +        } catch (OneCameraAccessException ocae) {
 +            mAppController.showErrorAndFinish(R.string.cannot_connect_camera);
 +            return;
 +        }
 +    }
 +
      @Override
      public void init(CameraActivity activity, boolean isSecureCamera, boolean isCaptureIntent) {
          Log.d(TAG, "init");
          mDisplayRotation = CameraUtil.getDisplayRotation();
          mCameraFacing = getFacingFromCameraId(
                  mSettingsManager.getInteger(mAppController.getModuleScope(), Keys.KEY_CAMERA_ID));
 +        updateCameraCharacteristics();
          mUI = new CaptureModuleUI(activity, mAppController.getModuleLayoutRoot(), mUIListener);
          mAppController.setPreviewStatusListener(mPreviewStatusListener);
  
  
              @Override
              public boolean isFlashSupported() {
 -                return true;
 +                return mCameraCharacteristics.isFlashSupported();
              }
          };
      }
  
                      Log.d(TAG, "Start to switch camera. cameraId=" + cameraId);
                      mCameraFacing = getFacingFromCameraId(cameraId);
 +                    updateCameraCharacteristics();
                      switchCamera();
                  }
              };
          } catch (InterruptedException e) {
              throw new RuntimeException("Interrupted while waiting to acquire camera-open lock.", e);
          }
 -        OneCameraCharacteristics cameraCharacteristics;
 -        try {
 -            cameraCharacteristics = mCameraManager.getCameraCharacteristics(mCameraFacing);
 -        } catch (OneCameraAccessException ocae) {
 -            mAppController.showErrorAndFinish(R.string.cannot_connect_camera);
 -            return;
 -        }
 +
          if (mCameraManager == null) {
              Log.e(TAG, "no available OneCameraManager, showing error dialog");
              mCameraOpenCloseLock.release();
          // Derive objects necessary for camera creation.
          MainThread mainThread = MainThread.create();
          ImageRotationCalculator imageRotationCalculator = ImageRotationCalculatorImpl
 -                .from(cameraCharacteristics);
 +                .from(mCameraCharacteristics);
  
          // Only enable HDR on the back camera
          boolean useHdr = mHdrEnabled && mCameraFacing == Facing.BACK;