diff options
| -rw-r--r-- | services/core/java/com/android/server/media/MediaSessionService.java | 35 |
1 files changed, 23 insertions, 12 deletions
diff --git a/services/core/java/com/android/server/media/MediaSessionService.java b/services/core/java/com/android/server/media/MediaSessionService.java index 87665e103fcc..a0b796103554 100644 --- a/services/core/java/com/android/server/media/MediaSessionService.java +++ b/services/core/java/com/android/server/media/MediaSessionService.java @@ -781,25 +781,36 @@ public class MediaSessionService extends SystemService implements Monitor { } if (session == null) { - for (int i = 0; i < steps; i++) { - try { - mAudioService.adjustSuggestedStreamVolume(direction, suggestedStream, - flags, getContext().getOpPackageName()); - } catch (RemoteException e) { - Log.e(TAG, "Error adjusting default volume.", e); + try { + if (delta == 0) { + mAudioService.adjustSuggestedStreamVolume(delta, suggestedStream, flags, + getContext().getOpPackageName()); + } else { + for (int i = 0; i < steps; i++) { + mAudioService.adjustSuggestedStreamVolume(direction, suggestedStream, + flags, getContext().getOpPackageName()); + } } + } catch (RemoteException e) { + Log.e(TAG, "Error adjusting default volume.", e); } } else { if (session.getPlaybackType() == MediaSession.VOLUME_TYPE_LOCAL) { - for (int i = 0; i < steps; i++) { - try { - mAudioService.adjustSuggestedStreamVolume(direction, + try { + if (delta == 0) { + mAudioService.adjustSuggestedStreamVolume(delta, session.getAudioStream(), flags, getContext().getOpPackageName()); - } catch (RemoteException e) { - Log.e(TAG, "Error adjusting volume for stream " - + session.getAudioStream(), e); + } else { + for (int i = 0; i < steps; i++) { + mAudioService.adjustSuggestedStreamVolume(direction, + session.getAudioStream(), flags, + getContext().getOpPackageName()); + } } + } catch (RemoteException e) { + Log.e(TAG, "Error adjusting volume for stream " + + session.getAudioStream(), e); } } else if (session.getPlaybackType() == MediaSession.VOLUME_TYPE_REMOTE) { session.adjustVolumeBy(delta); |