summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorChih-Chung Chang <chihchung@google.com>2011-10-17 19:40:12 -0700
committerAndroid (Google) Code Review <android-gerrit@google.com>2011-10-17 19:40:12 -0700
commit3c57859f03ce9257128e3b2cd29a906b8f9a6aa5 (patch)
tree301e8c5fca969e2d8b97614f90349538487b43fd
parenta038c14efdaa118e2d8c5b42584cb0bb5f3b2ec7 (diff)
parentff4f55c8d77e276dbcceedb4e560ca1d91ba38ba (diff)
Merge "Fix 5468644: Use the proper audio stream type to play sound." into ics-mr0
-rw-r--r--services/camera/libcameraservice/CameraService.cpp27
-rw-r--r--services/camera/libcameraservice/CameraService.h3
2 files changed, 16 insertions, 14 deletions
diff --git a/services/camera/libcameraservice/CameraService.cpp b/services/camera/libcameraservice/CameraService.cpp
index f306e4a9..171710a1 100644
--- a/services/camera/libcameraservice/CameraService.cpp
+++ b/services/camera/libcameraservice/CameraService.cpp
@@ -97,6 +97,16 @@ void CameraService::onFirstRef()
setCameraFree(i);
}
}
+
+ // Read the system property to determine if we have to use the
+ // AUDIO_STREAM_ENFORCED_AUDIBLE type.
+ char value[PROPERTY_VALUE_MAX];
+ property_get("ro.camera.sound.forced", value, "0");
+ if (strcmp(value, "0") != 0) {
+ mAudioStreamType = AUDIO_STREAM_ENFORCED_AUDIBLE;
+ } else {
+ mAudioStreamType = AUDIO_STREAM_MUSIC;
+ }
}
CameraService::~CameraService() {
@@ -282,21 +292,10 @@ void CameraService::setCameraFree(int cameraId) {
// A reference count is kept to determine when we will actually release the
// media players.
-static MediaPlayer* newMediaPlayer(const char *file) {
- // Read the system property to determine if we have need to use the
- // AUDIO_STREAM_ENFORCED_AUDIBLE type.
- char value[PROPERTY_VALUE_MAX];
- property_get("ro.camera.sound.forced", value, "0");
- int audioStreamType;
- if (strcmp(value, "0") != 0) {
- audioStreamType = AUDIO_STREAM_ENFORCED_AUDIBLE;
- } else {
- audioStreamType = AUDIO_STREAM_MUSIC;
- }
-
+MediaPlayer* CameraService::newMediaPlayer(const char *file) {
MediaPlayer* mp = new MediaPlayer();
if (mp->setDataSource(file, NULL) == NO_ERROR) {
- mp->setAudioStreamType(audioStreamType);
+ mp->setAudioStreamType(mAudioStreamType);
mp->prepare();
} else {
LOGE("Failed to load CameraService sounds: %s", file);
@@ -335,7 +334,7 @@ void CameraService::playSound(sound_kind kind) {
// do not play the sound if stream volume is 0
// (typically because ringer mode is silent).
int index;
- AudioSystem::getStreamVolumeIndex(AUDIO_STREAM_ENFORCED_AUDIBLE, &index);
+ AudioSystem::getStreamVolumeIndex(mAudioStreamType, &index);
if (index != 0) {
player->seekTo(0);
player->start();
diff --git a/services/camera/libcameraservice/CameraService.h b/services/camera/libcameraservice/CameraService.h
index 57abf835..cdfbc566 100644
--- a/services/camera/libcameraservice/CameraService.h
+++ b/services/camera/libcameraservice/CameraService.h
@@ -76,6 +76,9 @@ private:
void setCameraFree(int cameraId);
// sounds
+ audio_stream_type_t mAudioStreamType;
+ MediaPlayer* newMediaPlayer(const char *file);
+
Mutex mSoundLock;
sp<MediaPlayer> mSoundPlayer[NUM_SOUNDS];
int mSoundRef; // reference count (release all MediaPlayer when 0)