summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--res/values/camera2arrays.xml10
-rw-r--r--res/values/qcomstrings.xml8
-rw-r--r--res/xml/capture_preferences.xml7
-rw-r--r--src/com/android/camera/CaptureModule.java23
-rw-r--r--src/com/android/camera/CaptureUI.java3
-rw-r--r--src/com/android/camera/SettingsManager.java1
6 files changed, 51 insertions, 1 deletions
diff --git a/res/values/camera2arrays.xml b/res/values/camera2arrays.xml
index bb5eeca50..1f590fc32 100644
--- a/res/values/camera2arrays.xml
+++ b/res/values/camera2arrays.xml
@@ -829,4 +829,14 @@ for time lapse recording -->
<item>@string/pref_camera2_videosnap_value_enable</item>
<item>@string/pref_camera2_videosnap_value_disable</item>
</string-array>
+
+ <string-array name="pref_camera2_shutter_sound_entries" translatable="true">
+ <item>@string/pref_camera2_shutter_sound_entry_on</item>
+ <item>@string/pref_camera2_shutter_sound_entry_off</item>
+ </string-array>
+
+ <string-array name="pref_camera2_shutter_sound_entryvalues" translatable="false">
+ <item>@string/pref_camera2_shutter_sound_value_on</item>
+ <item>@string/pref_camera2_shutter_sound_value_off</item>
+ </string-array>
</resources>
diff --git a/res/values/qcomstrings.xml b/res/values/qcomstrings.xml
index c75be9ab0..330cb8979 100644
--- a/res/values/qcomstrings.xml
+++ b/res/values/qcomstrings.xml
@@ -1026,5 +1026,13 @@
<string name="pref_camera_scenemode_entry_bestpicture" translatable="true">BestPicture</string>
<string name="bestpicture_done" translatable="true">DONE</string>
<string name="bestpicture_at_least_one_picture" translatable="true">At least, one picture has to be chosen.</string>
+
+ <string name="pref_camera2_shutter_sound_default" translatable="true">on</string>
+ <string name="pref_camera2_shutter_sound_value_on" translatable="true">on</string>
+ <string name="pref_camera2_shutter_sound_value_off" translatable="true">off</string>
+
+ <string name="pref_camera2_shutter_sound_entry_on" translatable="true">On</string>
+ <string name="pref_camera2_shutter_sound_entry_off" translatable="true">Off</string>
+ <string name="pref_camera2_shutter_sound_title" translatable="true">Shutter Sound</string>
</resources>
diff --git a/res/xml/capture_preferences.xml b/res/xml/capture_preferences.xml
index a55cae460..dae2c5f7d 100644
--- a/res/xml/capture_preferences.xml
+++ b/res/xml/capture_preferences.xml
@@ -303,4 +303,11 @@
camera:key="pref_selfie_flash_key"
camera:singleIcon="@drawable/ic_settings_flash"
camera:title="@string/pref_selfie_flash_title" />
+
+ <ListPreference
+ camera:defaultValue="@string/pref_camera2_shutter_sound_default"
+ camera:entries="@array/pref_camera2_shutter_sound_entries"
+ camera:entryValues="@array/pref_camera2_shutter_sound_entryvalues"
+ camera:key="pref_camera2_shutter_sound_key"
+ camera:title="@string/pref_camera2_shutter_sound_title" />
</PreferenceGroup>
diff --git a/src/com/android/camera/CaptureModule.java b/src/com/android/camera/CaptureModule.java
index b33cb361f..1a7811000 100644
--- a/src/com/android/camera/CaptureModule.java
+++ b/src/com/android/camera/CaptureModule.java
@@ -52,6 +52,7 @@ import android.media.CamcorderProfile;
import android.media.CameraProfile;
import android.media.Image;
import android.media.ImageReader;
+import android.media.MediaActionSound;
import android.media.MediaMetadataRetriever;
import android.media.MediaRecorder;
import android.net.Uri;
@@ -278,6 +279,8 @@ public class CaptureModule implements CameraModule, PhotoController,
private static final int SELFIE_FLASH_DURATION = 680;
+ private MediaActionSound mSound;
+
private class SelfieThread extends Thread {
public void run() {
try {
@@ -1061,6 +1064,7 @@ public class CaptureModule implements CameraModule, PhotoController,
warningToast("Camera is not ready yet to take a picture.");
return;
}
+ checkAndPlayShutterSound(id);
final boolean csEnabled = isClearSightOn();
CaptureRequest.Builder captureBuilder;
@@ -1187,6 +1191,7 @@ public class CaptureModule implements CameraModule, PhotoController,
warningToast("Camera is not ready yet to take a video snapshot.");
return;
}
+ checkAndPlayShutterSound(id);
CaptureRequest.Builder captureBuilder =
mCameraDevice[id].createCaptureRequest(CameraDevice.TEMPLATE_VIDEO_SNAPSHOT);
@@ -1623,6 +1628,10 @@ public class CaptureModule implements CameraModule, PhotoController,
if (mIsRecordingVideo) {
stopRecordingVideo(getMainCameraId());
}
+ if (mSound != null) {
+ mSound.release();
+ mSound = null;
+ }
if (selfieThread != null) {
selfieThread.interrupt();
}
@@ -1754,6 +1763,11 @@ public class CaptureModule implements CameraModule, PhotoController,
mUI.showSurfaceView();
mUI.setSwitcherIndex();
mCameraIdList = new ArrayList<>();
+
+ if (mSound == null) {
+ mSound = new MediaActionSound();
+ }
+
if(mPostProcessor != null) {
String scene = mSettingsManager.getValue(SettingsManager.KEY_SCENE_MODE);
if (scene != null) {
@@ -3011,6 +3025,15 @@ public class CaptureModule implements CameraModule, PhotoController,
}
}
+ private void checkAndPlayShutterSound(int id) {
+ if (id == getMainCameraId()) {
+ String value = mSettingsManager.getValue(SettingsManager.KEY_SHUTTER_SOUND);
+ if (value != null && value.equals("on")) {
+ mSound.play(MediaActionSound.SHUTTER_CLICK);
+ }
+ }
+ }
+
private Surface getPreviewSurfaceForSession(int id) {
if (isBackCamera()) {
if (getCameraMode() == DUAL_MODE && id == MONO_ID) {
diff --git a/src/com/android/camera/CaptureUI.java b/src/com/android/camera/CaptureUI.java
index 7f1307b5c..cf3ca6d3a 100644
--- a/src/com/android/camera/CaptureUI.java
+++ b/src/com/android/camera/CaptureUI.java
@@ -120,7 +120,8 @@ public class CaptureUI implements FocusOverlayManager.FocusUI,
SettingsManager.KEY_VIDEO_QUALITY,
SettingsManager.KEY_TRACKINGFOCUS,
SettingsManager.KEY_MAKEUP,
- SettingsManager.KEY_VIDEO_TIME_LAPSE_FRAME_INTERVAL
+ SettingsManager.KEY_VIDEO_TIME_LAPSE_FRAME_INTERVAL,
+ SettingsManager.KEY_SHUTTER_SOUND
};
String[] mDeveloperKeys = new String[]{
SettingsManager.KEY_REDEYE_REDUCTION,
diff --git a/src/com/android/camera/SettingsManager.java b/src/com/android/camera/SettingsManager.java
index bc7ef2da8..c8f3f8c7b 100644
--- a/src/com/android/camera/SettingsManager.java
+++ b/src/com/android/camera/SettingsManager.java
@@ -117,6 +117,7 @@ public class SettingsManager implements ListMenu.SettingsListener {
public static final String KEY_AUTO_VIDEOSNAP_SIZE = "pref_camera2_videosnap_key";
public static final String KEY_VIDEO_HIGH_FRAME_RATE = "pref_camera2_hfr_key";
public static final String KEY_SELFIE_FLASH = "pref_selfie_flash_key";
+ public static final String KEY_SHUTTER_SOUND = "pref_camera2_shutter_sound_key";
private static final String TAG = "SnapCam_SettingsManager";
private static SettingsManager sInstance;