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

Commit af715abc authored by Jean-Michel Trivi's avatar Jean-Michel Trivi
Browse files

AudioAttributes: add SPEAKER_CLEANUP to system usages

Bug: 355050846
Flag: android.media.audio.speaker_cleanup_usage
Test: atest CtsMediaAudioTestCases:AudioAttributesTest
Change-Id: I741a6cbaf718f9a6c75980c45cfd98dce6b63c63
parent 8446cf57
Loading
Loading
Loading
Loading
+1 −0
Original line number Diff line number Diff line
@@ -7205,6 +7205,7 @@ package android.media {
    field @RequiresPermission(allOf={android.Manifest.permission.MODIFY_PHONE_STATE, android.Manifest.permission.MODIFY_AUDIO_ROUTING}) public static final int USAGE_CALL_ASSISTANT = 17; // 0x11
    field @RequiresPermission(android.Manifest.permission.MODIFY_AUDIO_ROUTING) public static final int USAGE_EMERGENCY = 1000; // 0x3e8
    field @RequiresPermission(android.Manifest.permission.MODIFY_AUDIO_ROUTING) public static final int USAGE_SAFETY = 1001; // 0x3e9
    field @FlaggedApi("android.media.audio.speaker_cleanup_usage") @RequiresPermission(android.Manifest.permission.MODIFY_AUDIO_ROUTING) public static final int USAGE_SPEAKER_CLEANUP = 1004; // 0x3ec
    field @RequiresPermission(android.Manifest.permission.MODIFY_AUDIO_ROUTING) public static final int USAGE_VEHICLE_STATUS = 1002; // 0x3ea
  }
+24 −8
Original line number Diff line number Diff line
@@ -16,11 +16,15 @@

package android.media;

import static android.media.audio.Flags.FLAG_SPEAKER_CLEANUP_USAGE;

import android.annotation.FlaggedApi;
import android.annotation.IntDef;
import android.annotation.NonNull;
import android.annotation.RequiresPermission;
import android.annotation.SystemApi;
import android.annotation.TestApi;
// TODO switch from HIDL imports to AIDL
import android.audio.policy.configuration.V7_0.AudioUsage;
import android.compat.annotation.UnsupportedAppUsage;
import android.media.audiopolicy.AudioProductStrategy;
@@ -246,6 +250,16 @@ public final class AudioAttributes implements Parcelable {
    @RequiresPermission(android.Manifest.permission.MODIFY_AUDIO_ROUTING)
    public static final int USAGE_ANNOUNCEMENT = SYSTEM_USAGE_OFFSET + 3;

    /**
     * @hide
     * Usage value to use when a system application plays a signal intended to clean up the
     * speaker transducers and free them of deposits of dust or water.
     */
    @FlaggedApi(FLAG_SPEAKER_CLEANUP_USAGE)
    @SystemApi
    @RequiresPermission(android.Manifest.permission.MODIFY_AUDIO_ROUTING)
    public static final int USAGE_SPEAKER_CLEANUP = SYSTEM_USAGE_OFFSET + 4;

    /**
     * IMPORTANT: when adding new usage types, add them to SDK_USAGES and update SUPPRESSIBLE_USAGES
     *            if applicable, as well as audioattributes.proto.
@@ -1522,6 +1536,8 @@ public final class AudioAttributes implements Parcelable {
                return "USAGE_VEHICLE_STATUS";
            case USAGE_ANNOUNCEMENT:
                return "USAGE_ANNOUNCEMENT";
            case USAGE_SPEAKER_CLEANUP:
                return "USAGE_SPEAKER_CLEANUP";
            default:
                return "unknown usage " + usage;
        }
@@ -1662,12 +1678,8 @@ public final class AudioAttributes implements Parcelable {
    }

    /**
     * @param usage one of {@link AttributeSystemUsage},
     *     {@link AttributeSystemUsage#USAGE_CALL_ASSISTANT},
     *     {@link AttributeSystemUsage#USAGE_EMERGENCY},
     *     {@link AttributeSystemUsage#USAGE_SAFETY},
     *     {@link AttributeSystemUsage#USAGE_VEHICLE_STATUS},
     *     {@link AttributeSystemUsage#USAGE_ANNOUNCEMENT}
     * Returns whether the given usage can only be used by system-privileged components
     * @param usage one of {@link AttributeSystemUsage}.
     * @return boolean indicating if the usage is a system usage or not
     * @hide
     */
@@ -1677,7 +1689,8 @@ public final class AudioAttributes implements Parcelable {
                || usage == USAGE_EMERGENCY
                || usage == USAGE_SAFETY
                || usage == USAGE_VEHICLE_STATUS
                || usage == USAGE_ANNOUNCEMENT);
                || usage == USAGE_ANNOUNCEMENT
                || usage == USAGE_SPEAKER_CLEANUP);
    }

    /**
@@ -1792,6 +1805,7 @@ public final class AudioAttributes implements Parcelable {
            case USAGE_SAFETY:
            case USAGE_VEHICLE_STATUS:
            case USAGE_ANNOUNCEMENT:
            case USAGE_SPEAKER_CLEANUP:
            case USAGE_UNKNOWN:
                return AudioSystem.STREAM_MUSIC;
            default:
@@ -1831,7 +1845,8 @@ public final class AudioAttributes implements Parcelable {
            USAGE_EMERGENCY,
            USAGE_SAFETY,
            USAGE_VEHICLE_STATUS,
            USAGE_ANNOUNCEMENT
            USAGE_ANNOUNCEMENT,
            USAGE_SPEAKER_CLEANUP
    })
    @Retention(RetentionPolicy.SOURCE)
    public @interface AttributeSystemUsage {}
@@ -1881,6 +1896,7 @@ public final class AudioAttributes implements Parcelable {
        USAGE_SAFETY,
        USAGE_VEHICLE_STATUS,
        USAGE_ANNOUNCEMENT,
        USAGE_SPEAKER_CLEANUP,
    })
    @Retention(RetentionPolicy.SOURCE)
    public @interface AttributeUsage {}
+1 −0
Original line number Diff line number Diff line
@@ -1080,6 +1080,7 @@ public class MediaFocusControl implements PlayerFocusEnforcer {
        switch (attr.getUsage()) {
            case AudioAttributes.USAGE_MEDIA:
            case AudioAttributes.USAGE_GAME:
            case AudioAttributes.USAGE_SPEAKER_CLEANUP:
                return 1000;
            case AudioAttributes.USAGE_ALARM:
            case AudioAttributes.USAGE_NOTIFICATION_RINGTONE: