diff options
| -rwxr-xr-x | api/current.txt | 1 | ||||
| -rw-r--r-- | media/java/android/media/AudioTrack.java | 44 |
2 files changed, 34 insertions, 11 deletions
diff --git a/api/current.txt b/api/current.txt index b458fac0067c..2197df9f98cb 100755 --- a/api/current.txt +++ b/api/current.txt @@ -23251,6 +23251,7 @@ package android.media { method public android.media.VolumeShaper createVolumeShaper(android.media.VolumeShaper.Configuration); method protected void finalize(); method public void flush(); + method public android.media.AudioAttributes getAudioAttributes(); method public int getAudioFormat(); method public int getAudioSessionId(); method public int getBufferCapacityInFrames(); diff --git a/media/java/android/media/AudioTrack.java b/media/java/android/media/AudioTrack.java index 3ec595d9ac11..d37f8ab529a1 100644 --- a/media/java/android/media/AudioTrack.java +++ b/media/java/android/media/AudioTrack.java @@ -16,23 +16,13 @@ package android.media; -import java.lang.annotation.Retention; -import java.lang.annotation.RetentionPolicy; -import java.lang.ref.WeakReference; -import java.lang.Math; -import java.nio.ByteBuffer; -import java.nio.ByteOrder; -import java.nio.NioUtils; -import java.util.LinkedList; -import java.util.concurrent.Executor; - import android.annotation.CallbackExecutor; import android.annotation.IntDef; import android.annotation.NonNull; import android.annotation.Nullable; import android.annotation.UnsupportedAppUsage; -import android.os.Build; import android.os.Binder; +import android.os.Build; import android.os.Handler; import android.os.HandlerThread; import android.os.Looper; @@ -43,6 +33,15 @@ import android.util.Log; import com.android.internal.annotations.GuardedBy; +import java.lang.annotation.Retention; +import java.lang.annotation.RetentionPolicy; +import java.lang.ref.WeakReference; +import java.nio.ByteBuffer; +import java.nio.ByteOrder; +import java.nio.NioUtils; +import java.util.LinkedList; +import java.util.concurrent.Executor; + /** * The AudioTrack class manages and plays a single audio resource for Java applications. * It allows streaming of PCM audio buffers to the audio sink for playback. This is @@ -372,6 +371,10 @@ public class AudioTrack extends PlayerBase */ private int mAudioFormat; // initialized by all constructors via audioParamCheck() /** + * The AudioAttributes used in configuration. + */ + private AudioAttributes mConfiguredAudioAttributes; + /** * Audio session ID */ private int mSessionId = AudioManager.AUDIO_SESSION_ID_GENERATE; @@ -571,6 +574,8 @@ public class AudioTrack extends PlayerBase super(attributes, AudioPlaybackConfiguration.PLAYER_TYPE_JAM_AUDIOTRACK); // mState already == STATE_UNINITIALIZED + mConfiguredAudioAttributes = attributes; // object copy not needed, immutable. + if (format == null) { throw new IllegalArgumentException("Illegal null AudioFormat"); } @@ -1302,6 +1307,23 @@ public class AudioTrack extends PlayerBase } /** + * Returns the {@link AudioAttributes} used in configuration. + * If a {@code streamType} is used instead of an {@code AudioAttributes} + * to configure the AudioTrack + * (the use of {@code streamType} for configuration is deprecated), + * then the {@code AudioAttributes} + * equivalent to the {@code streamType} is returned. + * @return The {@code AudioAttributes} used to configure the AudioTrack. + * @throws IllegalStateException If the track is not initialized. + */ + public @NonNull AudioAttributes getAudioAttributes() { + if (mState == STATE_UNINITIALIZED || mConfiguredAudioAttributes == null) { + throw new IllegalStateException("track not initialized"); + } + return mConfiguredAudioAttributes; + } + + /** * Returns the configured audio data encoding. See {@link AudioFormat#ENCODING_PCM_8BIT}, * {@link AudioFormat#ENCODING_PCM_16BIT}, and {@link AudioFormat#ENCODING_PCM_FLOAT}. */ |