diff options
author | Eino-Ville Talvala <etalvala@google.com> | 2011-10-13 09:59:14 -0700 |
---|---|---|
committer | Android (Google) Code Review <android-gerrit@google.com> | 2011-10-13 09:59:14 -0700 |
commit | 6baaa42a5bb88fdae55efa8dc6b7805b187f1d02 (patch) | |
tree | b7cc8831f3434adb8aa3d0b384711f4868ac391e /src/com/android/camera/EffectsRecorder.java | |
parent | 3069cb81151aa984cab6ba8cc2d944b43099efba (diff) | |
parent | 85a5556fb58f1cdc016f5afe5e07cbe1b419ffd8 (diff) | |
download | packages_apps_LegacyCamera-6baaa42a5bb88fdae55efa8dc6b7805b187f1d02.zip packages_apps_LegacyCamera-6baaa42a5bb88fdae55efa8dc6b7805b187f1d02.tar.gz packages_apps_LegacyCamera-6baaa42a5bb88fdae55efa8dc6b7805b187f1d02.tar.bz2 |
Merge "Play a sound when starting and stopping recording with effects." into ics-mr0
Diffstat (limited to 'src/com/android/camera/EffectsRecorder.java')
-rw-r--r-- | src/com/android/camera/EffectsRecorder.java | 33 |
1 files changed, 33 insertions, 0 deletions
diff --git a/src/com/android/camera/EffectsRecorder.java b/src/com/android/camera/EffectsRecorder.java index 2483173..9b3e3b1 100644 --- a/src/com/android/camera/EffectsRecorder.java +++ b/src/com/android/camera/EffectsRecorder.java @@ -17,6 +17,7 @@ package com.android.camera; import android.content.Context; +import android.content.res.AssetFileDescriptor; import android.filterfw.GraphEnvironment; import android.filterfw.core.Filter; import android.filterfw.core.GLEnvironment; @@ -36,13 +37,17 @@ import android.os.ConditionVariable; import android.os.Handler; import android.os.Looper; import android.os.ParcelFileDescriptor; +import android.os.SystemProperties; import android.util.Log; import android.view.Surface; import android.view.SurfaceHolder; import java.io.IOException; +import java.io.FileNotFoundException; +import java.io.File; import java.lang.Runnable; + /** * Encapsulates the mobile filter framework components needed to record video with * effects applied. Modeled after MediaRecorder. @@ -95,6 +100,9 @@ public class EffectsRecorder { private SurfaceTexture mTextureSource; + private static final String mVideoRecordSound = "/system/media/audio/ui/VideoRecord.ogg"; + private SoundPlayer mRecordSound; + private static final int STATE_CONFIGURE = 0; private static final int STATE_WAITING_FOR_SURFACE = 1; private static final int STATE_PREVIEW = 2; @@ -123,6 +131,28 @@ public class EffectsRecorder { if (mLogVerbose) Log.v(TAG, "EffectsRecorder created (" + this + ")"); mContext = context; mHandler = new Handler(Looper.getMainLooper()); + + // Construct sound player; use enforced sound output if necessary + File recordSoundFile = new File(mVideoRecordSound); + try { + ParcelFileDescriptor recordSoundParcel = + ParcelFileDescriptor.open(recordSoundFile, + ParcelFileDescriptor.MODE_READ_ONLY); + AssetFileDescriptor recordSoundAsset = + new AssetFileDescriptor(recordSoundParcel, 0, + AssetFileDescriptor.UNKNOWN_LENGTH); + if (SystemProperties.get("ro.camera.sound.forced", "0").equals("0")) { + if (mLogVerbose) Log.v(TAG, "Standard recording sound"); + mRecordSound = new SoundPlayer(recordSoundAsset, false); + } else { + if (mLogVerbose) Log.v(TAG, "Forced recording sound"); + mRecordSound = new SoundPlayer(recordSoundAsset, true); + } + } catch (java.io.FileNotFoundException e) { + Log.e(TAG, "System video record sound not found"); + mRecordSound = null; + } + } public void setCamera(Camera cameraDevice) { @@ -524,6 +554,7 @@ public class EffectsRecorder { recorder.setInputValue("errorListener", mErrorListener); } recorder.setInputValue("recording", true); + if (mRecordSound != null) mRecordSound.play(); mState = STATE_RECORD; } @@ -542,6 +573,7 @@ public class EffectsRecorder { } Filter recorder = mRunner.getGraph().getFilter("recorder"); recorder.setInputValue("recording", false); + if (mRecordSound != null) mRecordSound.play(); mState = STATE_PREVIEW; } @@ -670,6 +702,7 @@ public class EffectsRecorder { stopPreview(); // Fall-through default: + mRecordSound.release(); mState = STATE_RELEASED; break; } |