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

Commit c68bed40 authored by Automerger Merge Worker's avatar Automerger Merge Worker Committed by Android (Google) Code Review
Browse files

Merge "Merge "Revert "Update volume behavior documentation."" into udc-dev am:...

Merge "Merge "Revert "Update volume behavior documentation."" into udc-dev am: 50ed6f3e am: a471819e"
parents f1428dab a8d5f410
Loading
Loading
Loading
Loading
+14 −23
Original line number Diff line number Diff line
@@ -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;
@@ -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;
@@ -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;
@@ -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);
@@ -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
     */
@@ -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 {
+1 −1
Original line number Diff line number Diff line
@@ -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:"