summaryrefslogtreecommitdiffstats
path: root/src/com/android/camera/EffectsRecorder.java
diff options
context:
space:
mode:
authorEino-Ville Talvala <etalvala@google.com>2011-10-13 09:59:14 -0700
committerAndroid (Google) Code Review <android-gerrit@google.com>2011-10-13 09:59:14 -0700
commit6baaa42a5bb88fdae55efa8dc6b7805b187f1d02 (patch)
treeb7cc8831f3434adb8aa3d0b384711f4868ac391e /src/com/android/camera/EffectsRecorder.java
parent3069cb81151aa984cab6ba8cc2d944b43099efba (diff)
parent85a5556fb58f1cdc016f5afe5e07cbe1b419ffd8 (diff)
downloadpackages_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.java33
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;
}