diff options
author | Chih-Chung Chang <chihchung@google.com> | 2011-10-17 19:03:12 +0800 |
---|---|---|
committer | Chih-Chung Chang <chihchung@google.com> | 2011-10-17 19:04:00 +0800 |
commit | ff4f55c8d77e276dbcceedb4e560ca1d91ba38ba (patch) | |
tree | 7ccb6943f3cdf945985698523a2421224fe569db /services/camera | |
parent | 0cc79c66329b9ffa7d7bdfafa5d245a11fd3660d (diff) | |
download | frameworks_av-ff4f55c8d77e276dbcceedb4e560ca1d91ba38ba.zip frameworks_av-ff4f55c8d77e276dbcceedb4e560ca1d91ba38ba.tar.gz frameworks_av-ff4f55c8d77e276dbcceedb4e560ca1d91ba38ba.tar.bz2 |
Fix 5468644: Use the proper audio stream type to play sound.
Change-Id: I80dd37da277b1810959a2dbdd852078b26f70cf5
Diffstat (limited to 'services/camera')
-rw-r--r-- | services/camera/libcameraservice/CameraService.cpp | 27 | ||||
-rw-r--r-- | services/camera/libcameraservice/CameraService.h | 3 |
2 files changed, 16 insertions, 14 deletions
diff --git a/services/camera/libcameraservice/CameraService.cpp b/services/camera/libcameraservice/CameraService.cpp index f306e4a..171710a 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 57abf83..cdfbc56 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) |