Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 3c57859f authored by Chih-Chung Chang's avatar Chih-Chung Chang Committed by Android (Google) Code Review
Browse files

Merge "Fix 5468644: Use the proper audio stream type to play sound." into ics-mr0

parents a038c14e ff4f55c8
Loading
Loading
Loading
Loading
+13 −14
Original line number Diff line number Diff line
@@ -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();
+3 −0
Original line number Diff line number Diff line
@@ -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)