OSDN Git Service

audio policy: fix ringtone volume on headphones
authorEric Laurent <elaurent@google.com>
Thu, 6 Sep 2012 01:13:06 +0000 (18:13 -0700)
committerEric Laurent <elaurent@google.com>
Thu, 6 Sep 2012 01:13:06 +0000 (18:13 -0700)
When limiting ringtone volume because headphones are connected
and music is playing, the volume was not limited against the right
music volume. The is because the device used for music (headphone)
is not the same as the one used for ringtone (headphone + speaker).

Bug 6816207.

Change-Id: I3342be1789a1b7c58705812335b788f030bc6d76

audio/AudioPolicyManagerBase.cpp

index 39ac709..7cd5652 100644 (file)
@@ -2653,10 +2653,11 @@ float AudioPolicyManagerBase::computeVolume(int stream,
         // just stopped
         if (isStreamActive(AudioSystem::MUSIC, SONIFICATION_HEADSET_MUSIC_DELAY) ||
                 mLimitRingtoneVolume) {
+            audio_devices_t musicDevice = getDeviceForStrategy(STRATEGY_MEDIA, true /*fromCache*/);
             float musicVol = computeVolume(AudioSystem::MUSIC,
-                               mStreams[AudioSystem::MUSIC].getVolumeIndex(device),
+                               mStreams[AudioSystem::MUSIC].getVolumeIndex(musicDevice),
                                output,
-                               device);
+                               musicDevice);
             float minVol = (musicVol > SONIFICATION_HEADSET_VOLUME_MIN) ?
                                 musicVol : SONIFICATION_HEADSET_VOLUME_MIN;
             if (volume > minVol) {