summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rwxr-xr-xapi/current.txt1
-rw-r--r--media/java/android/media/AudioTrack.java44
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}.
*/