Loading media/java/android/media/AudioManager.java +14 −23 Original line number Diff line number Diff line Loading @@ -6251,6 +6251,7 @@ public class AudioManager { * Volume behavior for an audio device where no software attenuation is applied, and * the volume is kept synchronized between the host and the device itself through a * device-specific protocol such as BT AVRCP. * @see #setDeviceVolumeBehavior(AudioDeviceAttributes, int) */ @SystemApi public static final int DEVICE_VOLUME_BEHAVIOR_ABSOLUTE = 3; Loading @@ -6261,6 +6262,7 @@ public class AudioManager { * device-specific protocol (such as for hearing aids), based on the audio mode (e.g. * normal vs in phone call). * @see #setMode(int) * @see #setDeviceVolumeBehavior(AudioDeviceAttributes, int) */ @SystemApi public static final int DEVICE_VOLUME_BEHAVIOR_ABSOLUTE_MULTI_MODE = 4; Loading @@ -6270,11 +6272,6 @@ public class AudioManager { * A variant of {@link #DEVICE_VOLUME_BEHAVIOR_ABSOLUTE} where the host cannot reliably set * the volume percentage of the audio device. Specifically, {@link #setStreamVolume} will have * no effect, or an unreliable effect. * * {@link #DEVICE_VOLUME_BEHAVIOR_FULL} will be returned instead by * {@link #getDeviceVolumeBehavior} for target SDK versions before U. * * @see #RETURN_DEVICE_VOLUME_BEHAVIOR_ABSOLUTE_ADJUST_ONLY */ @SystemApi public static final int DEVICE_VOLUME_BEHAVIOR_ABSOLUTE_ADJUST_ONLY = 5; Loading Loading @@ -6316,27 +6313,18 @@ public class AudioManager { public @interface AbsoluteDeviceVolumeBehavior {} /** * Volume behaviors that can be set with {@link #setDeviceVolumeBehavior}. * @hide */ @IntDef({ DEVICE_VOLUME_BEHAVIOR_VARIABLE, DEVICE_VOLUME_BEHAVIOR_FULL, DEVICE_VOLUME_BEHAVIOR_FIXED, }) @Retention(RetentionPolicy.SOURCE) public @interface SettableDeviceVolumeBehavior {} /** * @hide * Throws IAE on a non-settable volume behavior value * Throws IAE on an invalid volume behavior value * @param volumeBehavior behavior value to check */ public static void enforceSettableVolumeBehavior(int volumeBehavior) { public static void enforceValidVolumeBehavior(int volumeBehavior) { switch (volumeBehavior) { case DEVICE_VOLUME_BEHAVIOR_VARIABLE: case DEVICE_VOLUME_BEHAVIOR_FULL: case DEVICE_VOLUME_BEHAVIOR_FIXED: case DEVICE_VOLUME_BEHAVIOR_ABSOLUTE: case DEVICE_VOLUME_BEHAVIOR_ABSOLUTE_MULTI_MODE: case DEVICE_VOLUME_BEHAVIOR_ABSOLUTE_ADJUST_ONLY: return; default: throw new IllegalArgumentException("Illegal volume behavior " + volumeBehavior); Loading @@ -6346,8 +6334,11 @@ public class AudioManager { /** * @hide * Sets the volume behavior for an audio output device. * * @see SettableDeviceVolumeBehavior * @see #DEVICE_VOLUME_BEHAVIOR_VARIABLE * @see #DEVICE_VOLUME_BEHAVIOR_FULL * @see #DEVICE_VOLUME_BEHAVIOR_FIXED * @see #DEVICE_VOLUME_BEHAVIOR_ABSOLUTE * @see #DEVICE_VOLUME_BEHAVIOR_ABSOLUTE_MULTI_MODE * @param device the device to be affected * @param deviceVolumeBehavior one of the device behaviors */ Loading @@ -6357,10 +6348,10 @@ public class AudioManager { Manifest.permission.MODIFY_AUDIO_SETTINGS_PRIVILEGED }) public void setDeviceVolumeBehavior(@NonNull AudioDeviceAttributes device, @SettableDeviceVolumeBehavior int deviceVolumeBehavior) { @DeviceVolumeBehavior int deviceVolumeBehavior) { // verify arguments (validity of device type is enforced in server) Objects.requireNonNull(device); enforceSettableVolumeBehavior(deviceVolumeBehavior); enforceValidVolumeBehavior(deviceVolumeBehavior); // communicate with service final IAudioService service = getService(); try { Loading services/core/java/com/android/server/audio/AudioService.java +1 −1 Original line number Diff line number Diff line Loading @@ -7242,7 +7242,7 @@ public class AudioService extends IAudioService.Stub super.setDeviceVolumeBehavior_enforcePermission(); // verify arguments Objects.requireNonNull(device); AudioManager.enforceSettableVolumeBehavior(deviceVolumeBehavior); AudioManager.enforceValidVolumeBehavior(deviceVolumeBehavior); sVolumeLogger.enqueue(new EventLogger.StringEvent("setDeviceVolumeBehavior: dev:" + AudioSystem.getOutputDeviceName(device.getInternalType()) + " addr:" Loading Loading
media/java/android/media/AudioManager.java +14 −23 Original line number Diff line number Diff line Loading @@ -6251,6 +6251,7 @@ public class AudioManager { * Volume behavior for an audio device where no software attenuation is applied, and * the volume is kept synchronized between the host and the device itself through a * device-specific protocol such as BT AVRCP. * @see #setDeviceVolumeBehavior(AudioDeviceAttributes, int) */ @SystemApi public static final int DEVICE_VOLUME_BEHAVIOR_ABSOLUTE = 3; Loading @@ -6261,6 +6262,7 @@ public class AudioManager { * device-specific protocol (such as for hearing aids), based on the audio mode (e.g. * normal vs in phone call). * @see #setMode(int) * @see #setDeviceVolumeBehavior(AudioDeviceAttributes, int) */ @SystemApi public static final int DEVICE_VOLUME_BEHAVIOR_ABSOLUTE_MULTI_MODE = 4; Loading @@ -6270,11 +6272,6 @@ public class AudioManager { * A variant of {@link #DEVICE_VOLUME_BEHAVIOR_ABSOLUTE} where the host cannot reliably set * the volume percentage of the audio device. Specifically, {@link #setStreamVolume} will have * no effect, or an unreliable effect. * * {@link #DEVICE_VOLUME_BEHAVIOR_FULL} will be returned instead by * {@link #getDeviceVolumeBehavior} for target SDK versions before U. * * @see #RETURN_DEVICE_VOLUME_BEHAVIOR_ABSOLUTE_ADJUST_ONLY */ @SystemApi public static final int DEVICE_VOLUME_BEHAVIOR_ABSOLUTE_ADJUST_ONLY = 5; Loading Loading @@ -6316,27 +6313,18 @@ public class AudioManager { public @interface AbsoluteDeviceVolumeBehavior {} /** * Volume behaviors that can be set with {@link #setDeviceVolumeBehavior}. * @hide */ @IntDef({ DEVICE_VOLUME_BEHAVIOR_VARIABLE, DEVICE_VOLUME_BEHAVIOR_FULL, DEVICE_VOLUME_BEHAVIOR_FIXED, }) @Retention(RetentionPolicy.SOURCE) public @interface SettableDeviceVolumeBehavior {} /** * @hide * Throws IAE on a non-settable volume behavior value * Throws IAE on an invalid volume behavior value * @param volumeBehavior behavior value to check */ public static void enforceSettableVolumeBehavior(int volumeBehavior) { public static void enforceValidVolumeBehavior(int volumeBehavior) { switch (volumeBehavior) { case DEVICE_VOLUME_BEHAVIOR_VARIABLE: case DEVICE_VOLUME_BEHAVIOR_FULL: case DEVICE_VOLUME_BEHAVIOR_FIXED: case DEVICE_VOLUME_BEHAVIOR_ABSOLUTE: case DEVICE_VOLUME_BEHAVIOR_ABSOLUTE_MULTI_MODE: case DEVICE_VOLUME_BEHAVIOR_ABSOLUTE_ADJUST_ONLY: return; default: throw new IllegalArgumentException("Illegal volume behavior " + volumeBehavior); Loading @@ -6346,8 +6334,11 @@ public class AudioManager { /** * @hide * Sets the volume behavior for an audio output device. * * @see SettableDeviceVolumeBehavior * @see #DEVICE_VOLUME_BEHAVIOR_VARIABLE * @see #DEVICE_VOLUME_BEHAVIOR_FULL * @see #DEVICE_VOLUME_BEHAVIOR_FIXED * @see #DEVICE_VOLUME_BEHAVIOR_ABSOLUTE * @see #DEVICE_VOLUME_BEHAVIOR_ABSOLUTE_MULTI_MODE * @param device the device to be affected * @param deviceVolumeBehavior one of the device behaviors */ Loading @@ -6357,10 +6348,10 @@ public class AudioManager { Manifest.permission.MODIFY_AUDIO_SETTINGS_PRIVILEGED }) public void setDeviceVolumeBehavior(@NonNull AudioDeviceAttributes device, @SettableDeviceVolumeBehavior int deviceVolumeBehavior) { @DeviceVolumeBehavior int deviceVolumeBehavior) { // verify arguments (validity of device type is enforced in server) Objects.requireNonNull(device); enforceSettableVolumeBehavior(deviceVolumeBehavior); enforceValidVolumeBehavior(deviceVolumeBehavior); // communicate with service final IAudioService service = getService(); try { Loading
services/core/java/com/android/server/audio/AudioService.java +1 −1 Original line number Diff line number Diff line Loading @@ -7242,7 +7242,7 @@ public class AudioService extends IAudioService.Stub super.setDeviceVolumeBehavior_enforcePermission(); // verify arguments Objects.requireNonNull(device); AudioManager.enforceSettableVolumeBehavior(deviceVolumeBehavior); AudioManager.enforceValidVolumeBehavior(deviceVolumeBehavior); sVolumeLogger.enqueue(new EventLogger.StringEvent("setDeviceVolumeBehavior: dev:" + AudioSystem.getOutputDeviceName(device.getInternalType()) + " addr:" Loading