From dcb0ef1d6eacdd7d18a6881ae75f67c9851a858c Mon Sep 17 00:00:00 2001 From: Angus Kong Date: Mon, 25 Mar 2013 23:11:43 -0700 Subject: Make camera calls asynchronous bug:8438047 Change-Id: I151d5ff85f0fb3646432a64b5841256a1448f101 --- src/com/android/camera/PhotoModule.java | 29 +++++++++++++++++++++-------- 1 file changed, 21 insertions(+), 8 deletions(-) (limited to 'src/com/android/camera/PhotoModule.java') diff --git a/src/com/android/camera/PhotoModule.java b/src/com/android/camera/PhotoModule.java index ff2faf790..c7301bdc9 100644 --- a/src/com/android/camera/PhotoModule.java +++ b/src/com/android/camera/PhotoModule.java @@ -173,6 +173,13 @@ public class PhotoModule } }; + private Runnable mFlashRunnable = new Runnable() { + @Override + public void run() { + animateFlash(); + } + }; + private final StringBuilder mBuilder = new StringBuilder(); private final Formatter mFormatter = new Formatter(mBuilder); private final Object[] mFormatterArgs = new Object[1]; @@ -205,7 +212,6 @@ public class PhotoModule private LocationManager mLocationManager; - private final ShutterCallback mShutterCallback = new ShutterCallback(); private final PostViewPictureCallback mPostViewPictureCallback = new PostViewPictureCallback(); private final RawPictureCallback mRawPictureCallback = @@ -721,11 +727,21 @@ public class PhotoModule private final class ShutterCallback implements android.hardware.Camera.ShutterCallback { + + private boolean mAnimateFlash; + + public ShutterCallback(boolean animateFlash) { + mAnimateFlash = animateFlash; + } + @Override public void onShutter() { mShutterCallbackTime = System.currentTimeMillis(); mShutterLag = mShutterCallbackTime - mCaptureStartTime; Log.v(TAG, "mShutterLag = " + mShutterLag + "ms"); + if (mAnimateFlash) { + mActivity.runOnUiThread(mFlashRunnable); + } } } @@ -988,13 +1004,10 @@ public class PhotoModule Util.setGpsParameters(mParameters, loc); mCameraDevice.setParameters(mParameters); - mCameraDevice.takePicture2(mShutterCallback, mRawPictureCallback, - mPostViewPictureCallback, new JpegPictureCallback(loc), - mCameraState, mFocusManager.getFocusState()); - - if (!animateBefore) { - animateFlash(); - } + mCameraDevice.takePicture2(new ShutterCallback(!animateBefore), + mRawPictureCallback, mPostViewPictureCallback, + new JpegPictureCallback(loc), mCameraState, + mFocusManager.getFocusState()); mNamedImages.nameNewImage(mContentResolver, mCaptureStartTime); -- cgit v1.2.3