Automated import from //branches/master/...@141471,141471
diff --git a/camera/libcameraservice/Android.mk b/camera/libcameraservice/Android.mk
index 2dfe659..96cc512 100644
--- a/camera/libcameraservice/Android.mk
+++ b/camera/libcameraservice/Android.mk
@@ -42,7 +42,8 @@
LOCAL_SHARED_LIBRARIES:= \
libui \
libutils \
- libcutils
+ libcutils \
+ libmedia
LOCAL_MODULE:= libcameraservice
diff --git a/camera/libcameraservice/CameraService.cpp b/camera/libcameraservice/CameraService.cpp
index 15e3b21..851b213 100644
--- a/camera/libcameraservice/CameraService.cpp
+++ b/camera/libcameraservice/CameraService.cpp
@@ -28,6 +28,8 @@
#include <utils/MemoryHeapBase.h>
#include <ui/ICameraService.h>
+#include <media/mediaplayer.h>
+#include <media/AudioSystem.h>
#include "CameraService.h"
namespace android {
@@ -151,6 +153,19 @@
}
}
+static sp<MediaPlayer> newMediaPlayer(const char *file)
+{
+ sp<MediaPlayer> mp = new MediaPlayer();
+ if (mp->setDataSource(file) == NO_ERROR) {
+ mp->setAudioStreamType(AudioSystem::ALARM);
+ mp->prepare();
+ } else {
+ mp.clear();
+ LOGE("Failed to load CameraService sounds.");
+ }
+ return mp;
+}
+
CameraService::Client::Client(const sp<CameraService>& cameraService,
const sp<ICameraClient>& cameraClient, pid_t clientPid)
{
@@ -161,6 +176,9 @@
mHardware = openCameraHardware();
mUseOverlay = mHardware->useOverlay();
+ mMediaPlayerClick = newMediaPlayer("/system/media/audio/ui/camera_click.ogg");
+ mMediaPlayerBeep = newMediaPlayer("/system/media/audio/ui/VideoRecord.ogg");
+
// Callback is disabled by default
mPreviewCallbackFlag = FRAME_CALLBACK_FLAG_NOOP;
LOGD("Client X constructor");
@@ -265,6 +283,9 @@
#endif
}
+ mMediaPlayerBeep.clear();
+ mMediaPlayerClick.clear();
+
// make sure we tear down the hardware
mClientPid = IPCThreadState::self()->getCallingPid();
disconnect();
@@ -464,6 +485,9 @@
status_t CameraService::Client::startRecording()
{
+ if (mMediaPlayerBeep.get() != NULL) {
+ mMediaPlayerBeep->start();
+ }
return startCameraMode(CAMERA_RECORDING_MODE);
}
@@ -502,6 +526,9 @@
return;
}
+ if (mMediaPlayerBeep.get() != NULL) {
+ mMediaPlayerBeep->start();
+ }
mHardware->stopRecording();
LOGV("stopRecording(), hardware stopped OK");
mPreviewBuffer.clear();
@@ -684,6 +711,9 @@
return INVALID_OPERATION;
}
+ if (mMediaPlayerClick.get() != NULL) {
+ mMediaPlayerClick->start();
+ }
return mHardware->takePicture(shutterCallback,
yuvPictureCallback,
jpegPictureCallback,
diff --git a/camera/libcameraservice/CameraService.h b/camera/libcameraservice/CameraService.h
index d9b7927..6752f26 100644
--- a/camera/libcameraservice/CameraService.h
+++ b/camera/libcameraservice/CameraService.h
@@ -27,6 +27,8 @@
namespace android {
+class MediaPlayer;
+
// ----------------------------------------------------------------------------
#define LIKELY( exp ) (__builtin_expect( (exp) != 0, true ))
@@ -178,6 +180,9 @@
sp<MemoryHeapBase> mPreviewBuffer;
int mPreviewCallbackFlag;
+ sp<MediaPlayer> mMediaPlayerClick;
+ sp<MediaPlayer> mMediaPlayerBeep;
+
// these are immutable once the object is created,
// they don't need to be protected by a lock
sp<ICameraClient> mCameraClient;
diff --git a/data/sounds/AudioPackage2.mk b/data/sounds/AudioPackage2.mk
index adf7857..f2bf76e 100644
--- a/data/sounds/AudioPackage2.mk
+++ b/data/sounds/AudioPackage2.mk
@@ -45,6 +45,8 @@
$(local_path)/effects/KeypressSpacebar.ogg:system/media/audio/ui/KeypressSpacebar.ogg \
$(local_path)/effects/KeypressDelete.ogg:system/media/audio/ui/KeypressDelete.ogg \
$(local_path)/effects/KeypressReturn.ogg:system/media/audio/ui/KeypressReturn.ogg \
+ $(LOCAL_PATH)/effects/VideoRecord.ogg:system/media/audio/ui/VideoRecord.ogg \
+ $(LOCAL_PATH)/effects/camera_click.ogg:system/media/audio/ui/camera_click.ogg \
$(local_path)/newwavelabs/Big_Easy.ogg:system/media/audio/ringtones/Big_Easy.ogg \
$(local_path)/newwavelabs/Bollywood.ogg:system/media/audio/ringtones/Bollywood.ogg \
$(local_path)/newwavelabs/Cairo.ogg:system/media/audio/ringtones/Cairo.ogg \
diff --git a/data/sounds/OriginalAudio.mk b/data/sounds/OriginalAudio.mk
index dbd6ad3..291f0b6 100644
--- a/data/sounds/OriginalAudio.mk
+++ b/data/sounds/OriginalAudio.mk
@@ -65,5 +65,6 @@
$(LOCAL_PATH)/effects/KeypressDelete.ogg:system/media/audio/ui/KeypressDelete.ogg \
$(LOCAL_PATH)/effects/KeypressReturn.ogg:system/media/audio/ui/KeypressReturn.ogg \
$(LOCAL_PATH)/effects/VideoRecord.ogg:system/media/audio/ui/VideoRecord.ogg \
+ $(LOCAL_PATH)/effects/camera_click.ogg:system/media/audio/ui/camera_click.ogg \
$(LOCAL_PATH)/newwavelabs/CrazyDream.ogg:system/media/audio/ringtones/CrazyDream.ogg \
$(LOCAL_PATH)/newwavelabs/DreamTheme.ogg:system/media/audio/ringtones/DreamTheme.ogg
diff --git a/data/sounds/effects/camera_click.ogg b/data/sounds/effects/camera_click.ogg
new file mode 100644
index 0000000..0a769ff
--- /dev/null
+++ b/data/sounds/effects/camera_click.ogg
Binary files differ