Loading media/java/android/media/AudioManagerInternal.java +3 −0 Original line number Diff line number Diff line Loading @@ -35,4 +35,7 @@ public abstract class AudioManagerInternal { public abstract void setStreamVolumeForUid(int streamType, int direction, int flags, String callingPackage, int uid); public abstract void adjustMasterVolumeForUid(int steps, int flags, String callingPackage, int uid); } media/java/android/media/AudioService.java +21 −9 Original line number Diff line number Diff line Loading @@ -50,7 +50,6 @@ import android.media.MediaPlayer.OnCompletionListener; import android.media.MediaPlayer.OnErrorListener; import android.media.audiopolicy.AudioMix; import android.media.audiopolicy.AudioPolicyConfig; import android.media.session.MediaSessionLegacyHelper; import android.os.Binder; import android.os.Build; import android.os.Environment; Loading @@ -61,7 +60,6 @@ import android.os.Message; import android.os.PowerManager; import android.os.RemoteCallbackList; import android.os.RemoteException; import android.os.ServiceManager; import android.os.SystemClock; import android.os.SystemProperties; import android.os.UserHandle; Loading @@ -75,12 +73,11 @@ import android.util.Log; import android.util.MathUtils; import android.util.Slog; import android.view.KeyEvent; import android.view.OrientationEventListener; import android.view.Surface; import android.view.WindowManager; import android.view.accessibility.AccessibilityManager; import android.view.OrientationEventListener; import com.android.internal.telephony.ITelephony; import com.android.internal.util.XmlUtils; import com.android.server.LocalServices; Loading @@ -91,8 +88,6 @@ import java.io.IOException; import java.io.PrintWriter; import java.lang.reflect.Field; import java.util.ArrayList; import java.util.concurrent.ConcurrentHashMap; import java.util.Arrays; import java.util.HashMap; import java.util.Iterator; import java.util.List; Loading @@ -100,6 +95,7 @@ import java.util.Map; import java.util.NoSuchElementException; import java.util.Objects; import java.util.Set; import java.util.concurrent.ConcurrentHashMap; /** * The implementation of the volume manager service. Loading Loading @@ -1152,6 +1148,10 @@ public class AudioService extends IAudioService.Stub { /** @see AudioManager#adjustMasterVolume(int, int) */ public void adjustMasterVolume(int steps, int flags, String callingPackage) { adjustMasterVolume(steps, flags, callingPackage, Binder.getCallingUid()); } public void adjustMasterVolume(int steps, int flags, String callingPackage, int uid) { if (mUseFixedVolume) { return; } Loading @@ -1166,7 +1166,7 @@ public class AudioService extends IAudioService.Stub { } //Log.d(TAG, "adjustMasterVolume volume: " + volume + " steps: " + steps); setMasterVolume(volume, flags, callingPackage); setMasterVolume(volume, flags, callingPackage, uid); } // StreamVolumeCommand contains the information needed to defer the process of Loading Loading @@ -1679,18 +1679,24 @@ public class AudioService extends IAudioService.Stub { } } @Override public int getMasterVolume() { if (isMasterMute()) return 0; return getLastAudibleMasterVolume(); } @Override public void setMasterVolume(int volume, int flags, String callingPackage) { setMasterVolume(volume, flags, callingPackage, Binder.getCallingUid()); } public void setMasterVolume(int volume, int flags, String callingPackage, int uid) { if (mUseFixedVolume) { return; } if (mAppOps.noteOp(AppOpsManager.OP_AUDIO_MASTER_VOLUME, Binder.getCallingUid(), callingPackage) != AppOpsManager.MODE_ALLOWED) { if (mAppOps.noteOp(AppOpsManager.OP_AUDIO_MASTER_VOLUME, uid, callingPackage) != AppOpsManager.MODE_ALLOWED) { return; } Loading Loading @@ -5667,6 +5673,12 @@ public class AudioService extends IAudioService.Stub { String callingPackage, int uid) { setStreamVolume(streamType, direction, flags, callingPackage, uid); } @Override public void adjustMasterVolumeForUid(int steps, int flags, String callingPackage, int uid) { adjustMasterVolume(steps, flags, callingPackage, uid); } } //========================================================================================== Loading services/core/java/com/android/server/media/MediaSessionRecord.java +9 −0 Original line number Diff line number Diff line Loading @@ -90,6 +90,7 @@ public class MediaSessionRecord implements IBinder.DeathRecipient { private final SessionStub mSession; private final SessionCb mSessionCb; private final MediaSessionService mService; private final boolean mUseMasterVolume; private final Object mLock = new Object(); private final ArrayList<ISessionControllerCallback> mControllerCallbacks = Loading Loading @@ -139,6 +140,8 @@ public class MediaSessionRecord implements IBinder.DeathRecipient { mAudioManager = (AudioManager) service.getContext().getSystemService(Context.AUDIO_SERVICE); mAudioManagerInternal = LocalServices.getService(AudioManagerInternal.class); mAudioAttrs = new AudioAttributes.Builder().setUsage(AudioAttributes.USAGE_MEDIA).build(); mUseMasterVolume = service.getContext().getResources().getBoolean( com.android.internal.R.bool.config_useMasterVolume); } /** Loading Loading @@ -248,6 +251,12 @@ public class MediaSessionRecord implements IBinder.DeathRecipient { direction = -1; } if (mVolumeType == PlaybackInfo.PLAYBACK_TYPE_LOCAL) { if (mUseMasterVolume) { // If this device only uses master volume and playback is local // just adjust the master volume and return. mAudioManagerInternal.adjustMasterVolumeForUid(direction, flags, packageName, uid); return; } int stream = AudioAttributes.toLegacyStreamType(mAudioAttrs); if (useSuggested) { if (AudioSystem.isStreamActive(stream, 0)) { Loading services/core/java/com/android/server/media/MediaSessionService.java +10 −2 Original line number Diff line number Diff line Loading @@ -86,6 +86,7 @@ public class MediaSessionService extends SystemService implements Monitor { private final Object mLock = new Object(); private final MessageHandler mHandler = new MessageHandler(); private final PowerManager.WakeLock mMediaEventWakeLock; private final boolean mUseMasterVolume; private KeyguardManager mKeyguardManager; private IAudioService mAudioService; Loading @@ -104,6 +105,8 @@ public class MediaSessionService extends SystemService implements Monitor { mPriorityStack = new MediaSessionStack(); PowerManager pm = (PowerManager) context.getSystemService(Context.POWER_SERVICE); mMediaEventWakeLock = pm.newWakeLock(PowerManager.PARTIAL_WAKE_LOCK, "handleMediaEvent"); mUseMasterVolume = context.getResources().getBoolean( com.android.internal.R.bool.config_useMasterVolume); } @Override Loading Loading @@ -819,8 +822,13 @@ public class MediaSessionService extends SystemService implements Monitor { return; } try { if (mUseMasterVolume) { mAudioService.adjustMasterVolume(direction, flags, getContext().getOpPackageName()); } else { mAudioService.adjustSuggestedStreamVolume(direction, suggestedStream, flags, getContext().getOpPackageName()); } } catch (RemoteException e) { Log.e(TAG, "Error adjusting default volume.", e); } Loading Loading
media/java/android/media/AudioManagerInternal.java +3 −0 Original line number Diff line number Diff line Loading @@ -35,4 +35,7 @@ public abstract class AudioManagerInternal { public abstract void setStreamVolumeForUid(int streamType, int direction, int flags, String callingPackage, int uid); public abstract void adjustMasterVolumeForUid(int steps, int flags, String callingPackage, int uid); }
media/java/android/media/AudioService.java +21 −9 Original line number Diff line number Diff line Loading @@ -50,7 +50,6 @@ import android.media.MediaPlayer.OnCompletionListener; import android.media.MediaPlayer.OnErrorListener; import android.media.audiopolicy.AudioMix; import android.media.audiopolicy.AudioPolicyConfig; import android.media.session.MediaSessionLegacyHelper; import android.os.Binder; import android.os.Build; import android.os.Environment; Loading @@ -61,7 +60,6 @@ import android.os.Message; import android.os.PowerManager; import android.os.RemoteCallbackList; import android.os.RemoteException; import android.os.ServiceManager; import android.os.SystemClock; import android.os.SystemProperties; import android.os.UserHandle; Loading @@ -75,12 +73,11 @@ import android.util.Log; import android.util.MathUtils; import android.util.Slog; import android.view.KeyEvent; import android.view.OrientationEventListener; import android.view.Surface; import android.view.WindowManager; import android.view.accessibility.AccessibilityManager; import android.view.OrientationEventListener; import com.android.internal.telephony.ITelephony; import com.android.internal.util.XmlUtils; import com.android.server.LocalServices; Loading @@ -91,8 +88,6 @@ import java.io.IOException; import java.io.PrintWriter; import java.lang.reflect.Field; import java.util.ArrayList; import java.util.concurrent.ConcurrentHashMap; import java.util.Arrays; import java.util.HashMap; import java.util.Iterator; import java.util.List; Loading @@ -100,6 +95,7 @@ import java.util.Map; import java.util.NoSuchElementException; import java.util.Objects; import java.util.Set; import java.util.concurrent.ConcurrentHashMap; /** * The implementation of the volume manager service. Loading Loading @@ -1152,6 +1148,10 @@ public class AudioService extends IAudioService.Stub { /** @see AudioManager#adjustMasterVolume(int, int) */ public void adjustMasterVolume(int steps, int flags, String callingPackage) { adjustMasterVolume(steps, flags, callingPackage, Binder.getCallingUid()); } public void adjustMasterVolume(int steps, int flags, String callingPackage, int uid) { if (mUseFixedVolume) { return; } Loading @@ -1166,7 +1166,7 @@ public class AudioService extends IAudioService.Stub { } //Log.d(TAG, "adjustMasterVolume volume: " + volume + " steps: " + steps); setMasterVolume(volume, flags, callingPackage); setMasterVolume(volume, flags, callingPackage, uid); } // StreamVolumeCommand contains the information needed to defer the process of Loading Loading @@ -1679,18 +1679,24 @@ public class AudioService extends IAudioService.Stub { } } @Override public int getMasterVolume() { if (isMasterMute()) return 0; return getLastAudibleMasterVolume(); } @Override public void setMasterVolume(int volume, int flags, String callingPackage) { setMasterVolume(volume, flags, callingPackage, Binder.getCallingUid()); } public void setMasterVolume(int volume, int flags, String callingPackage, int uid) { if (mUseFixedVolume) { return; } if (mAppOps.noteOp(AppOpsManager.OP_AUDIO_MASTER_VOLUME, Binder.getCallingUid(), callingPackage) != AppOpsManager.MODE_ALLOWED) { if (mAppOps.noteOp(AppOpsManager.OP_AUDIO_MASTER_VOLUME, uid, callingPackage) != AppOpsManager.MODE_ALLOWED) { return; } Loading Loading @@ -5667,6 +5673,12 @@ public class AudioService extends IAudioService.Stub { String callingPackage, int uid) { setStreamVolume(streamType, direction, flags, callingPackage, uid); } @Override public void adjustMasterVolumeForUid(int steps, int flags, String callingPackage, int uid) { adjustMasterVolume(steps, flags, callingPackage, uid); } } //========================================================================================== Loading
services/core/java/com/android/server/media/MediaSessionRecord.java +9 −0 Original line number Diff line number Diff line Loading @@ -90,6 +90,7 @@ public class MediaSessionRecord implements IBinder.DeathRecipient { private final SessionStub mSession; private final SessionCb mSessionCb; private final MediaSessionService mService; private final boolean mUseMasterVolume; private final Object mLock = new Object(); private final ArrayList<ISessionControllerCallback> mControllerCallbacks = Loading Loading @@ -139,6 +140,8 @@ public class MediaSessionRecord implements IBinder.DeathRecipient { mAudioManager = (AudioManager) service.getContext().getSystemService(Context.AUDIO_SERVICE); mAudioManagerInternal = LocalServices.getService(AudioManagerInternal.class); mAudioAttrs = new AudioAttributes.Builder().setUsage(AudioAttributes.USAGE_MEDIA).build(); mUseMasterVolume = service.getContext().getResources().getBoolean( com.android.internal.R.bool.config_useMasterVolume); } /** Loading Loading @@ -248,6 +251,12 @@ public class MediaSessionRecord implements IBinder.DeathRecipient { direction = -1; } if (mVolumeType == PlaybackInfo.PLAYBACK_TYPE_LOCAL) { if (mUseMasterVolume) { // If this device only uses master volume and playback is local // just adjust the master volume and return. mAudioManagerInternal.adjustMasterVolumeForUid(direction, flags, packageName, uid); return; } int stream = AudioAttributes.toLegacyStreamType(mAudioAttrs); if (useSuggested) { if (AudioSystem.isStreamActive(stream, 0)) { Loading
services/core/java/com/android/server/media/MediaSessionService.java +10 −2 Original line number Diff line number Diff line Loading @@ -86,6 +86,7 @@ public class MediaSessionService extends SystemService implements Monitor { private final Object mLock = new Object(); private final MessageHandler mHandler = new MessageHandler(); private final PowerManager.WakeLock mMediaEventWakeLock; private final boolean mUseMasterVolume; private KeyguardManager mKeyguardManager; private IAudioService mAudioService; Loading @@ -104,6 +105,8 @@ public class MediaSessionService extends SystemService implements Monitor { mPriorityStack = new MediaSessionStack(); PowerManager pm = (PowerManager) context.getSystemService(Context.POWER_SERVICE); mMediaEventWakeLock = pm.newWakeLock(PowerManager.PARTIAL_WAKE_LOCK, "handleMediaEvent"); mUseMasterVolume = context.getResources().getBoolean( com.android.internal.R.bool.config_useMasterVolume); } @Override Loading Loading @@ -819,8 +822,13 @@ public class MediaSessionService extends SystemService implements Monitor { return; } try { if (mUseMasterVolume) { mAudioService.adjustMasterVolume(direction, flags, getContext().getOpPackageName()); } else { mAudioService.adjustSuggestedStreamVolume(direction, suggestedStream, flags, getContext().getOpPackageName()); } } catch (RemoteException e) { Log.e(TAG, "Error adjusting default volume.", e); } Loading