summaryrefslogtreecommitdiffstats
path: root/src/com/android/camera/PhotoModule.java
diff options
context:
space:
mode:
Diffstat (limited to 'src/com/android/camera/PhotoModule.java')
-rw-r--r--src/com/android/camera/PhotoModule.java45
1 files changed, 44 insertions, 1 deletions
diff --git a/src/com/android/camera/PhotoModule.java b/src/com/android/camera/PhotoModule.java
index 8a0533a1d..36fde8b06 100644
--- a/src/com/android/camera/PhotoModule.java
+++ b/src/com/android/camera/PhotoModule.java
@@ -351,6 +351,23 @@ public class PhotoModule
private int mJpegFileSizeEstimation = 0;
private int mRemainingPhotos = -1;
+ private static final int SELFIE_FLASH_DURATION = 680;
+
+ private class SelfieThread extends Thread {
+ public void run() {
+ try {
+ Thread.sleep(SELFIE_FLASH_DURATION);
+ mActivity.runOnUiThread(new Runnable() {
+ public void run() {
+ mFocusManager.doSnap();
+ }
+ });
+ } catch(InterruptedException e) {
+ }
+ selfieThread = null;
+ }
+ }
+ private SelfieThread selfieThread;
private MediaSaveService.OnMediaSavedListener mOnMediaSavedListener =
new MediaSaveService.OnMediaSavedListener() {
@@ -1157,6 +1174,7 @@ public class PhotoModule
public void onPictureTaken(final byte [] jpegData, CameraProxy camera) {
Log.d(TAG, "JpegPictureCallback: onPictureTaken()");
if (mCameraState != LONGSHOT) {
+ mUI.stopSelfieFlash();
mUI.enableShutter(true);
}
if (mPaused) {
@@ -1864,6 +1882,9 @@ public class PhotoModule
}
mUI.overrideSettings(CameraSettings.KEY_FLASH_MODE, flashMode);
}
+
+ if(mCameraId != CameraHolder.instance().getFrontCameraId())
+ CameraSettings.removePreferenceFromScreen(mPreferenceGroup, CameraSettings.KEY_SELFIE_FLASH);
}
private void overrideCameraSettings(final String flashMode,
@@ -2152,8 +2173,25 @@ public class PhotoModule
mActivity.getString(R.string.pref_camera_zsl_default));
mUI.overrideSettings(CameraSettings.KEY_ZSL, zsl);
mUI.startCountDown(seconds, playSound);
+
} else {
mSnapshotOnIdle = false;
+ initiateSnap();
+ }
+ }
+
+ private void initiateSnap()
+ {
+ if(mPreferences.getString(CameraSettings.KEY_SELFIE_FLASH,
+ mActivity.getString(R.string.pref_selfie_flash_default))
+ .equalsIgnoreCase("on") &&
+ mCameraId == CameraHolder.instance().getFrontCameraId()) {
+ mUI.startSelfieFlash();
+ if(selfieThread == null) {
+ selfieThread = new SelfieThread();
+ selfieThread.start();
+ }
+ } else {
mFocusManager.doSnap();
}
mShutterPressing = false;
@@ -2324,6 +2362,11 @@ public class PhotoModule
mSensorManager.unregisterListener(this, msensor);
}
+ if(selfieThread != null) {
+ selfieThread.interrupt();
+ }
+ mUI.stopSelfieFlash();
+
Log.d(TAG, "remove idle handleer in onPause");
removeIdleHandler();
}
@@ -4301,7 +4344,7 @@ public class PhotoModule
@Override
public void onCountDownFinished() {
mSnapshotOnIdle = false;
- mFocusManager.doSnap();
+ initiateSnap();
mFocusManager.onShutterUp();
mUI.overrideSettings(CameraSettings.KEY_ZSL, null);
mUI.showUIAfterCountDown();