diff options
-rw-r--r-- | res/values/camera2arrays.xml | 10 | ||||
-rw-r--r-- | res/values/qcomstrings.xml | 8 | ||||
-rw-r--r-- | res/xml/capture_preferences.xml | 7 | ||||
-rw-r--r-- | src/com/android/camera/CaptureModule.java | 23 | ||||
-rw-r--r-- | src/com/android/camera/CaptureUI.java | 3 | ||||
-rw-r--r-- | src/com/android/camera/SettingsManager.java | 1 |
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; |