diff options
| author | 2024-11-01 22:46:25 +0000 | |
|---|---|---|
| committer | 2024-11-01 22:46:25 +0000 | |
| commit | b87fa1c015447273f210ac7b5c98ea16b806a349 (patch) | |
| tree | 8daca363c0767e79eb35971607345cff42dae5cd | |
| parent | 5f37d1fddfcad7d739648ce44ed1539f58a7c70d (diff) | |
Revert "Revert "AudioAttributes: add SPEAKER_CLEANUP to system u..."
Revert submission 30183828-revert-30116824-spkr_cleanup-LPPERYPFDP
Reason for revert: CarService unit test fixed in ag/30200827
Reverted changes: /q/submissionid:30183828-revert-30116824-spkr_cleanup-LPPERYPFDP
Change-Id: I770d51f0517edef405ca493413d78f9d44c7cf6f
| -rw-r--r-- | core/api/system-current.txt | 1 | ||||
| -rw-r--r-- | media/java/android/media/AudioAttributes.java | 32 | ||||
| -rw-r--r-- | services/core/java/com/android/server/audio/MediaFocusControl.java | 1 |
3 files changed, 26 insertions, 8 deletions
diff --git a/core/api/system-current.txt b/core/api/system-current.txt index 491bca2c3a5f..19578f7907a9 100644 --- a/core/api/system-current.txt +++ b/core/api/system-current.txt @@ -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 } diff --git a/media/java/android/media/AudioAttributes.java b/media/java/android/media/AudioAttributes.java index 1024a5519965..5a8eb3ab17b8 100644 --- a/media/java/android/media/AudioAttributes.java +++ b/media/java/android/media/AudioAttributes.java @@ -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; @@ -247,6 +251,16 @@ public final class AudioAttributes implements Parcelable { 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. * Also consider adding them to <aaudio/AAudio.h> for the NDK. @@ -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 {} diff --git a/services/core/java/com/android/server/audio/MediaFocusControl.java b/services/core/java/com/android/server/audio/MediaFocusControl.java index b4af46efcb38..103eba32f642 100644 --- a/services/core/java/com/android/server/audio/MediaFocusControl.java +++ b/services/core/java/com/android/server/audio/MediaFocusControl.java @@ -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: |