Loading core/api/current.txt +6 −1 Original line number Diff line number Diff line Loading @@ -21982,7 +21982,7 @@ package android.media { public final class AudioPlaybackConfiguration implements android.os.Parcelable { method public int describeContents(); method public android.media.AudioAttributes getAudioAttributes(); method @Nullable public android.media.AudioDeviceInfo getAudioDeviceInfo(); method @Deprecated @FlaggedApi("android.media.audio.routed_device_ids") @Nullable public android.media.AudioDeviceInfo getAudioDeviceInfo(); method public void writeToParcel(android.os.Parcel, int); field @NonNull public static final android.os.Parcelable.Creator<android.media.AudioPlaybackConfiguration> CREATOR; } Loading Loading @@ -22065,6 +22065,7 @@ package android.media { method public android.media.AudioDeviceInfo getPreferredDevice(); method public int getRecordingState(); method public android.media.AudioDeviceInfo getRoutedDevice(); method @FlaggedApi("android.media.audio.routed_device_ids") @NonNull public java.util.List<android.media.AudioDeviceInfo> getRoutedDevices(); method public int getSampleRate(); method public int getState(); method public int getTimestamp(@NonNull android.media.AudioTimestamp, int); Loading Loading @@ -22159,6 +22160,7 @@ package android.media { method public void addOnRoutingChangedListener(android.media.AudioRouting.OnRoutingChangedListener, android.os.Handler); method public android.media.AudioDeviceInfo getPreferredDevice(); method public android.media.AudioDeviceInfo getRoutedDevice(); method @FlaggedApi("android.media.audio.routed_device_ids") @NonNull public default java.util.List<android.media.AudioDeviceInfo> getRoutedDevices(); method public void removeOnRoutingChangedListener(android.media.AudioRouting.OnRoutingChangedListener); method public boolean setPreferredDevice(android.media.AudioDeviceInfo); } Loading Loading @@ -22217,6 +22219,7 @@ package android.media { method public int getPositionNotificationPeriod(); method public android.media.AudioDeviceInfo getPreferredDevice(); method public android.media.AudioDeviceInfo getRoutedDevice(); method @FlaggedApi("android.media.audio.routed_device_ids") @NonNull public java.util.List<android.media.AudioDeviceInfo> getRoutedDevices(); method public int getSampleRate(); method @IntRange(from=1) public int getStartThresholdInFrames(); method public int getState(); Loading Loading @@ -24385,6 +24388,7 @@ package android.media { method @NonNull public android.media.PlaybackParams getPlaybackParams(); method public android.media.AudioDeviceInfo getPreferredDevice(); method public android.media.AudioDeviceInfo getRoutedDevice(); method @FlaggedApi("android.media.audio.routed_device_ids") @NonNull public java.util.List<android.media.AudioDeviceInfo> getRoutedDevices(); method public int getSelectedTrack(int) throws java.lang.IllegalStateException; method @NonNull public android.media.SyncParams getSyncParams(); method @Nullable public android.media.MediaTimestamp getTimestamp(); Loading Loading @@ -24598,6 +24602,7 @@ package android.media { method public android.os.PersistableBundle getMetrics(); method public android.media.AudioDeviceInfo getPreferredDevice(); method public android.media.AudioDeviceInfo getRoutedDevice(); method @FlaggedApi("android.media.audio.routed_device_ids") @NonNull public java.util.List<android.media.AudioDeviceInfo> getRoutedDevices(); method public android.view.Surface getSurface(); method public boolean isPrivacySensitive(); method public void pause() throws java.lang.IllegalStateException; core/api/system-current.txt +1 −0 Original line number Diff line number Diff line Loading @@ -7464,6 +7464,7 @@ package android.media { } public final class AudioPlaybackConfiguration implements android.os.Parcelable { method @FlaggedApi("android.media.audio.routed_device_ids") @NonNull @RequiresPermission(android.Manifest.permission.MODIFY_AUDIO_ROUTING) public java.util.List<android.media.AudioDeviceInfo> getAudioDeviceInfos(); method public int getChannelMask(); method public int getClientPid(); method public int getClientUid(); media/java/android/media/AudioPlaybackConfiguration.java +25 −1 Original line number Diff line number Diff line Loading @@ -19,6 +19,7 @@ package android.media; import static android.media.AudioAttributes.ALLOW_CAPTURE_BY_ALL; import static android.media.AudioAttributes.ALLOW_CAPTURE_BY_NONE; import static android.media.audio.Flags.FLAG_MUTED_BY_PORT_VOLUME_API; import static android.media.audio.Flags.FLAG_ROUTED_DEVICE_IDS; import android.annotation.FlaggedApi; import android.annotation.IntDef; Loading @@ -39,6 +40,8 @@ import com.android.internal.annotations.GuardedBy; import java.io.PrintWriter; import java.lang.annotation.Retention; import java.lang.annotation.RetentionPolicy; import java.util.ArrayList; import java.util.List; import java.util.Objects; /** Loading Loading @@ -461,8 +464,12 @@ public final class AudioPlaybackConfiguration implements Parcelable { /** * Returns information about the {@link AudioDeviceInfo} used for this playback. * @return the audio playback device or null if the device is not available at the time of query * @return the audio playback device or null if the device is not available at the time of * query. * @deprecated this information was never populated */ @Deprecated @FlaggedApi(FLAG_ROUTED_DEVICE_IDS) public @Nullable AudioDeviceInfo getAudioDeviceInfo() { final int deviceId; synchronized (mUpdateablePropLock) { Loading @@ -474,6 +481,23 @@ public final class AudioPlaybackConfiguration implements Parcelable { return AudioManager.getDeviceForPortId(deviceId, AudioManager.GET_DEVICES_OUTPUTS); } /** * @hide * Returns information about the List of {@link AudioDeviceInfo} used for this playback. * @return the audio playback devices */ @SystemApi @FlaggedApi(FLAG_ROUTED_DEVICE_IDS) @RequiresPermission(android.Manifest.permission.MODIFY_AUDIO_ROUTING) public @NonNull List<AudioDeviceInfo> getAudioDeviceInfos() { List<AudioDeviceInfo> audioDeviceInfos = new ArrayList<AudioDeviceInfo>(); AudioDeviceInfo audioDeviceInfo = getAudioDeviceInfo(); if (audioDeviceInfo != null) { audioDeviceInfos.add(audioDeviceInfo); } return audioDeviceInfos; } /** * @hide * Return the audio session ID associated with this player. Loading media/java/android/media/AudioRecord.java +19 −0 Original line number Diff line number Diff line Loading @@ -20,8 +20,10 @@ import static android.companion.virtual.VirtualDeviceParams.DEVICE_POLICY_DEFAUL import static android.companion.virtual.VirtualDeviceParams.POLICY_TYPE_AUDIO; import static android.content.Context.DEVICE_ID_DEFAULT; import static android.media.AudioManager.AUDIO_SESSION_ID_GENERATE; import static android.media.audio.Flags.FLAG_ROUTED_DEVICE_IDS; import android.annotation.CallbackExecutor; import android.annotation.FlaggedApi; import android.annotation.FloatRange; import android.annotation.IntDef; import android.annotation.IntRange; Loading Loading @@ -1919,6 +1921,23 @@ public class AudioRecord implements AudioRouting, MicrophoneDirection, return AudioManager.getDeviceForPortId(deviceId, AudioManager.GET_DEVICES_INPUTS); } /** * Returns a List of {@link AudioDeviceInfo} identifying the current routing of this * AudioRecord. * Note: The query is only valid if the AudioRecord is currently playing. If it is not, * <code>getRoutedDevices()</code> will return an empty list. */ @Override @FlaggedApi(FLAG_ROUTED_DEVICE_IDS) public @NonNull List<AudioDeviceInfo> getRoutedDevices() { List<AudioDeviceInfo> audioDeviceInfos = new ArrayList<AudioDeviceInfo>(); AudioDeviceInfo audioDeviceInfo = getRoutedDevice(); if (audioDeviceInfo != null) { audioDeviceInfos.add(audioDeviceInfo); } return audioDeviceInfos; } /** * Must match the native definition in frameworks/av/service/audioflinger/Audioflinger.h. */ Loading media/java/android/media/AudioRouting.java +23 −0 Original line number Diff line number Diff line Loading @@ -16,9 +16,16 @@ package android.media; import static android.media.audio.Flags.FLAG_ROUTED_DEVICE_IDS; import android.annotation.FlaggedApi; import android.annotation.NonNull; import android.os.Handler; import android.os.Looper; import java.util.ArrayList; import java.util.List; /** * AudioRouting defines an interface for controlling routing and routing notifications in * AudioTrack and AudioRecord objects. Loading Loading @@ -48,6 +55,22 @@ public interface AudioRouting { */ public AudioDeviceInfo getRoutedDevice(); /** * Returns a List of {@link AudioDeviceInfo} identifying the current routing of this * AudioTrack/AudioRecord. * Note: The query is only valid if the AudioTrack/AudioRecord is currently playing. * If it is not, <code>getRoutedDevices()</code> will return an empty List. */ @FlaggedApi(FLAG_ROUTED_DEVICE_IDS) default @NonNull List<AudioDeviceInfo> getRoutedDevices() { List<AudioDeviceInfo> audioDeviceInfos = new ArrayList<AudioDeviceInfo>(); AudioDeviceInfo audioDeviceInfo = getRoutedDevice(); if (audioDeviceInfo != null) { audioDeviceInfos.add(audioDeviceInfo); } return new ArrayList<AudioDeviceInfo>(); } /** * Adds an {@link AudioRouting.OnRoutingChangedListener} to receive notifications of routing * changes on this AudioTrack/AudioRecord. Loading Loading
core/api/current.txt +6 −1 Original line number Diff line number Diff line Loading @@ -21982,7 +21982,7 @@ package android.media { public final class AudioPlaybackConfiguration implements android.os.Parcelable { method public int describeContents(); method public android.media.AudioAttributes getAudioAttributes(); method @Nullable public android.media.AudioDeviceInfo getAudioDeviceInfo(); method @Deprecated @FlaggedApi("android.media.audio.routed_device_ids") @Nullable public android.media.AudioDeviceInfo getAudioDeviceInfo(); method public void writeToParcel(android.os.Parcel, int); field @NonNull public static final android.os.Parcelable.Creator<android.media.AudioPlaybackConfiguration> CREATOR; } Loading Loading @@ -22065,6 +22065,7 @@ package android.media { method public android.media.AudioDeviceInfo getPreferredDevice(); method public int getRecordingState(); method public android.media.AudioDeviceInfo getRoutedDevice(); method @FlaggedApi("android.media.audio.routed_device_ids") @NonNull public java.util.List<android.media.AudioDeviceInfo> getRoutedDevices(); method public int getSampleRate(); method public int getState(); method public int getTimestamp(@NonNull android.media.AudioTimestamp, int); Loading Loading @@ -22159,6 +22160,7 @@ package android.media { method public void addOnRoutingChangedListener(android.media.AudioRouting.OnRoutingChangedListener, android.os.Handler); method public android.media.AudioDeviceInfo getPreferredDevice(); method public android.media.AudioDeviceInfo getRoutedDevice(); method @FlaggedApi("android.media.audio.routed_device_ids") @NonNull public default java.util.List<android.media.AudioDeviceInfo> getRoutedDevices(); method public void removeOnRoutingChangedListener(android.media.AudioRouting.OnRoutingChangedListener); method public boolean setPreferredDevice(android.media.AudioDeviceInfo); } Loading Loading @@ -22217,6 +22219,7 @@ package android.media { method public int getPositionNotificationPeriod(); method public android.media.AudioDeviceInfo getPreferredDevice(); method public android.media.AudioDeviceInfo getRoutedDevice(); method @FlaggedApi("android.media.audio.routed_device_ids") @NonNull public java.util.List<android.media.AudioDeviceInfo> getRoutedDevices(); method public int getSampleRate(); method @IntRange(from=1) public int getStartThresholdInFrames(); method public int getState(); Loading Loading @@ -24385,6 +24388,7 @@ package android.media { method @NonNull public android.media.PlaybackParams getPlaybackParams(); method public android.media.AudioDeviceInfo getPreferredDevice(); method public android.media.AudioDeviceInfo getRoutedDevice(); method @FlaggedApi("android.media.audio.routed_device_ids") @NonNull public java.util.List<android.media.AudioDeviceInfo> getRoutedDevices(); method public int getSelectedTrack(int) throws java.lang.IllegalStateException; method @NonNull public android.media.SyncParams getSyncParams(); method @Nullable public android.media.MediaTimestamp getTimestamp(); Loading Loading @@ -24598,6 +24602,7 @@ package android.media { method public android.os.PersistableBundle getMetrics(); method public android.media.AudioDeviceInfo getPreferredDevice(); method public android.media.AudioDeviceInfo getRoutedDevice(); method @FlaggedApi("android.media.audio.routed_device_ids") @NonNull public java.util.List<android.media.AudioDeviceInfo> getRoutedDevices(); method public android.view.Surface getSurface(); method public boolean isPrivacySensitive(); method public void pause() throws java.lang.IllegalStateException;
core/api/system-current.txt +1 −0 Original line number Diff line number Diff line Loading @@ -7464,6 +7464,7 @@ package android.media { } public final class AudioPlaybackConfiguration implements android.os.Parcelable { method @FlaggedApi("android.media.audio.routed_device_ids") @NonNull @RequiresPermission(android.Manifest.permission.MODIFY_AUDIO_ROUTING) public java.util.List<android.media.AudioDeviceInfo> getAudioDeviceInfos(); method public int getChannelMask(); method public int getClientPid(); method public int getClientUid();
media/java/android/media/AudioPlaybackConfiguration.java +25 −1 Original line number Diff line number Diff line Loading @@ -19,6 +19,7 @@ package android.media; import static android.media.AudioAttributes.ALLOW_CAPTURE_BY_ALL; import static android.media.AudioAttributes.ALLOW_CAPTURE_BY_NONE; import static android.media.audio.Flags.FLAG_MUTED_BY_PORT_VOLUME_API; import static android.media.audio.Flags.FLAG_ROUTED_DEVICE_IDS; import android.annotation.FlaggedApi; import android.annotation.IntDef; Loading @@ -39,6 +40,8 @@ import com.android.internal.annotations.GuardedBy; import java.io.PrintWriter; import java.lang.annotation.Retention; import java.lang.annotation.RetentionPolicy; import java.util.ArrayList; import java.util.List; import java.util.Objects; /** Loading Loading @@ -461,8 +464,12 @@ public final class AudioPlaybackConfiguration implements Parcelable { /** * Returns information about the {@link AudioDeviceInfo} used for this playback. * @return the audio playback device or null if the device is not available at the time of query * @return the audio playback device or null if the device is not available at the time of * query. * @deprecated this information was never populated */ @Deprecated @FlaggedApi(FLAG_ROUTED_DEVICE_IDS) public @Nullable AudioDeviceInfo getAudioDeviceInfo() { final int deviceId; synchronized (mUpdateablePropLock) { Loading @@ -474,6 +481,23 @@ public final class AudioPlaybackConfiguration implements Parcelable { return AudioManager.getDeviceForPortId(deviceId, AudioManager.GET_DEVICES_OUTPUTS); } /** * @hide * Returns information about the List of {@link AudioDeviceInfo} used for this playback. * @return the audio playback devices */ @SystemApi @FlaggedApi(FLAG_ROUTED_DEVICE_IDS) @RequiresPermission(android.Manifest.permission.MODIFY_AUDIO_ROUTING) public @NonNull List<AudioDeviceInfo> getAudioDeviceInfos() { List<AudioDeviceInfo> audioDeviceInfos = new ArrayList<AudioDeviceInfo>(); AudioDeviceInfo audioDeviceInfo = getAudioDeviceInfo(); if (audioDeviceInfo != null) { audioDeviceInfos.add(audioDeviceInfo); } return audioDeviceInfos; } /** * @hide * Return the audio session ID associated with this player. Loading
media/java/android/media/AudioRecord.java +19 −0 Original line number Diff line number Diff line Loading @@ -20,8 +20,10 @@ import static android.companion.virtual.VirtualDeviceParams.DEVICE_POLICY_DEFAUL import static android.companion.virtual.VirtualDeviceParams.POLICY_TYPE_AUDIO; import static android.content.Context.DEVICE_ID_DEFAULT; import static android.media.AudioManager.AUDIO_SESSION_ID_GENERATE; import static android.media.audio.Flags.FLAG_ROUTED_DEVICE_IDS; import android.annotation.CallbackExecutor; import android.annotation.FlaggedApi; import android.annotation.FloatRange; import android.annotation.IntDef; import android.annotation.IntRange; Loading Loading @@ -1919,6 +1921,23 @@ public class AudioRecord implements AudioRouting, MicrophoneDirection, return AudioManager.getDeviceForPortId(deviceId, AudioManager.GET_DEVICES_INPUTS); } /** * Returns a List of {@link AudioDeviceInfo} identifying the current routing of this * AudioRecord. * Note: The query is only valid if the AudioRecord is currently playing. If it is not, * <code>getRoutedDevices()</code> will return an empty list. */ @Override @FlaggedApi(FLAG_ROUTED_DEVICE_IDS) public @NonNull List<AudioDeviceInfo> getRoutedDevices() { List<AudioDeviceInfo> audioDeviceInfos = new ArrayList<AudioDeviceInfo>(); AudioDeviceInfo audioDeviceInfo = getRoutedDevice(); if (audioDeviceInfo != null) { audioDeviceInfos.add(audioDeviceInfo); } return audioDeviceInfos; } /** * Must match the native definition in frameworks/av/service/audioflinger/Audioflinger.h. */ Loading
media/java/android/media/AudioRouting.java +23 −0 Original line number Diff line number Diff line Loading @@ -16,9 +16,16 @@ package android.media; import static android.media.audio.Flags.FLAG_ROUTED_DEVICE_IDS; import android.annotation.FlaggedApi; import android.annotation.NonNull; import android.os.Handler; import android.os.Looper; import java.util.ArrayList; import java.util.List; /** * AudioRouting defines an interface for controlling routing and routing notifications in * AudioTrack and AudioRecord objects. Loading Loading @@ -48,6 +55,22 @@ public interface AudioRouting { */ public AudioDeviceInfo getRoutedDevice(); /** * Returns a List of {@link AudioDeviceInfo} identifying the current routing of this * AudioTrack/AudioRecord. * Note: The query is only valid if the AudioTrack/AudioRecord is currently playing. * If it is not, <code>getRoutedDevices()</code> will return an empty List. */ @FlaggedApi(FLAG_ROUTED_DEVICE_IDS) default @NonNull List<AudioDeviceInfo> getRoutedDevices() { List<AudioDeviceInfo> audioDeviceInfos = new ArrayList<AudioDeviceInfo>(); AudioDeviceInfo audioDeviceInfo = getRoutedDevice(); if (audioDeviceInfo != null) { audioDeviceInfos.add(audioDeviceInfo); } return new ArrayList<AudioDeviceInfo>(); } /** * Adds an {@link AudioRouting.OnRoutingChangedListener} to receive notifications of routing * changes on this AudioTrack/AudioRecord. Loading