Package org.robolectric.shadows
Class ShadowAudioTrack
java.lang.Object
org.robolectric.shadows.ShadowAudioTrack
@Implements(value=android.media.AudioTrack.class,
looseSignatures=true)
public class ShadowAudioTrack
extends Object
Implementation of a couple methods in
AudioTrack
. Only a couple methods are supported,
other methods are expected run through the real class. The two AudioTrack.WriteMode
are treated the
same.-
Nested Class Summary
Modifier and TypeClassDescriptionstatic interface
Listeners to be notified when data is written to anAudioTrack
viaAudioTrack.write(ByteBuffer, int, int)
-
Field Summary
-
Constructor Summary
-
Method Summary
Modifier and TypeMethodDescriptionstatic void
addAllowedNonPcmEncoding
(int encoding) Add a non-PCM encoding for whichAudioTrack
instances are allowed to be created.static void
Registers anShadowAudioTrack.OnAudioDataWrittenListener
to theShadowAudioTrack
.static void
addDirectPlaybackSupport
(AudioFormat format, AudioAttributes attr) Adds support for direct playback for the pair ofAudioFormat
andAudioAttributes
where the format encoding must be non-PCM.protected void
addOnRoutingChangedListener
(AudioRouting.OnRoutingChangedListener listener, Handler handler) static void
Clears all encodings that have been added withaddAllowedNonPcmEncoding(int)
.static void
Clears all encodings that have been added for direct playback support withaddDirectPlaybackSupport(android.media.AudioFormat, android.media.AudioAttributes)
.protected void
flush()
protected int
protected PlaybackParams
protected AudioDeviceInfo
protected static int
protected static int
native_get_min_buff_size
(int sampleRateInHz, int channelConfig, int audioFormat) Returns a predefined or default minimum buffer size.protected static boolean
native_is_direct_output_supported
(int encoding, int sampleRate, int channelMask, int channelIndexMask, int contentType, int usage, int flags) protected int
native_setup
(Object audioTrack, Object attributes, int[] sampleRate, int channelMask, int channelIndexMask, int audioFormat, int buffSizeInBytes, int mode, int[] sessionId, long nativeAudioTrack, boolean offload) protected int
native_setup
(Object audioTrack, Object attributes, int[] sampleRate, int channelMask, int channelIndexMask, int audioFormat, int buffSizeInBytes, int mode, int[] sessionId, long nativeAudioTrack, boolean offload, int encapsulationMode, Object tunerConfiguration) protected int
native_setup
(Object audioTrack, Object attributes, int[] sampleRate, int channelMask, int channelIndexMask, int audioFormat, int buffSizeInBytes, int mode, int[] sessionId, long nativeAudioTrack, boolean offload, int encapsulationMode, Object tunerConfiguration, String opPackageName) protected int
native_setup
(Object audioTrack, Object attributes, int[] sampleRate, int channelMask, int channelIndexMask, int audioFormat, int buffSizeInBytes, int mode, int[] sessionId, Parcel attributionSource, long nativeAudioTrack, boolean offload, int encapsulationMode, Object tunerConfiguration, String opPackageName) protected int
native_write_byte
(byte[] audioData, int offsetInBytes, int sizeInBytes, int format, boolean isBlocking) Returns the number of bytes to write.static void
Removes anShadowAudioTrack.OnAudioDataWrittenListener
from theShadowAudioTrack
.protected void
static void
static void
setMinBufferSize
(int bufferSize) In the real class, the minimum buffer size is estimated from audio sample rate and other factors.void
setPlaybackParams
(PlaybackParams params) static void
setRoutedDevice
(AudioDeviceInfo routedDevice) Sets the routed device returned fromAudioTrack.getRoutedDevice()
and informs all registeredAudioRouting.OnRoutingChangedListener
.protected int
write
(ByteBuffer audioData, int sizeInBytes, int writeMode) Returns the number of bytes to write, except with invalid parameters.
-
Field Details
-
DEFAULT_MIN_BUFFER_SIZE
protected static final int DEFAULT_MIN_BUFFER_SIZE- See Also:
-
-
Constructor Details
-
ShadowAudioTrack
public ShadowAudioTrack()
-
-
Method Details
-
setMinBufferSize
public static void setMinBufferSize(int bufferSize) In the real class, the minimum buffer size is estimated from audio sample rate and other factors. We do not provide such estimation innative_get_min_buff_size(int, int, int)
, instead letting users set the minimum for the expected audio sample. Usually higher sample rate requires bigger buffer size. -
addDirectPlaybackSupport
Adds support for direct playback for the pair ofAudioFormat
andAudioAttributes
where the format encoding must be non-PCM. CallingAudioTrack.isDirectPlaybackSupported(AudioFormat, AudioAttributes)
will returntrue
for matchingAudioFormat
andAudioAttributes
. The matching is performed against the format's encoding, sample rate, channel mask and channel index mask, and the attribute's content type, usage and flags.- Parameters:
format
- TheAudioFormat
, which must be of a non-PCM encoding. If the encoding is PCM, the method will throw anIllegalArgumentException
.attr
- TheAudioAttributes
.
-
clearDirectPlaybackSupportedFormats
public static void clearDirectPlaybackSupportedFormats()Clears all encodings that have been added for direct playback support withaddDirectPlaybackSupport(android.media.AudioFormat, android.media.AudioAttributes)
. -
addAllowedNonPcmEncoding
public static void addAllowedNonPcmEncoding(int encoding) Add a non-PCM encoding for whichAudioTrack
instances are allowed to be created.- Parameters:
encoding
- One ofAudioFormat
ENCODING_
constants that represents a non-PCM encoding. Ifencoding
is PCM, this method throws anIllegalArgumentException
.
-
clearAllowedNonPcmEncodings
public static void clearAllowedNonPcmEncodings()Clears all encodings that have been added withaddAllowedNonPcmEncoding(int)
. -
setRoutedDevice
Sets the routed device returned fromAudioTrack.getRoutedDevice()
and informs all registeredAudioRouting.OnRoutingChangedListener
.Note that this affects the routed device for all
AudioTrack
instances.- Parameters:
routedDevice
- The route device, or null to reset it to unknown.
-
native_get_FCC_8
-
native_is_direct_output_supported
@Implementation(minSdk=29) protected static boolean native_is_direct_output_supported(int encoding, int sampleRate, int channelMask, int channelIndexMask, int contentType, int usage, int flags) -
native_get_min_buff_size
@Implementation protected static int native_get_min_buff_size(int sampleRateInHz, int channelConfig, int audioFormat) Returns a predefined or default minimum buffer size. Audio format and config are neglected. -
native_setup
@Implementation(minSdk=28, maxSdk=29) protected int native_setup(Object audioTrack, Object attributes, int[] sampleRate, int channelMask, int channelIndexMask, int audioFormat, int buffSizeInBytes, int mode, int[] sessionId, long nativeAudioTrack, boolean offload) -
native_setup
@Implementation(minSdk=30, maxSdk=30) protected int native_setup(Object audioTrack, Object attributes, int[] sampleRate, int channelMask, int channelIndexMask, int audioFormat, int buffSizeInBytes, int mode, int[] sessionId, long nativeAudioTrack, boolean offload, int encapsulationMode, Object tunerConfiguration) -
native_setup
@Implementation(minSdk=31, maxSdk=33) protected int native_setup(Object audioTrack, Object attributes, int[] sampleRate, int channelMask, int channelIndexMask, int audioFormat, int buffSizeInBytes, int mode, int[] sessionId, long nativeAudioTrack, boolean offload, int encapsulationMode, Object tunerConfiguration, String opPackageName) -
native_setup
@Implementation(minSdk=34) protected int native_setup(Object audioTrack, Object attributes, int[] sampleRate, int channelMask, int channelIndexMask, int audioFormat, int buffSizeInBytes, int mode, int[] sessionId, Parcel attributionSource, long nativeAudioTrack, boolean offload, int encapsulationMode, Object tunerConfiguration, String opPackageName) -
native_write_byte
@Implementation(minSdk=23) protected int native_write_byte(byte[] audioData, int offsetInBytes, int sizeInBytes, int format, boolean isBlocking) Returns the number of bytes to write. This method returns immediately even withAudioTrack.WRITE_BLOCKING
. If theAudioTrack
instance was created with a non-PCM encoding and the encoding can no longer be played directly, the method will returnAudioTrack.ERROR_DEAD_OBJECT
; -
getRoutedDevice
-
addOnRoutingChangedListener
@Implementation(minSdk=24) protected void addOnRoutingChangedListener(AudioRouting.OnRoutingChangedListener listener, Handler handler) -
removeOnRoutingChangedListener
@Implementation(minSdk=24) protected void removeOnRoutingChangedListener(AudioRouting.OnRoutingChangedListener listener) -
setPlaybackParams
-
getPlaybackParams
-
write
Returns the number of bytes to write, except with invalid parameters. If theAudioTrack
was created for a non-PCM encoding that can no longer be played directly, it returnsAudioTrack.ERROR_DEAD_OBJECT
. AssumesAudioTrack
is already initialized (object properly created). Do not block even ifAudioTrack
in offload mode is in STOPPING play state. This method returns immediately even withAudioTrack.WRITE_BLOCKING
-
getPlaybackHeadPosition
-
flush
-
addAudioDataListener
Registers anShadowAudioTrack.OnAudioDataWrittenListener
to theShadowAudioTrack
.- Parameters:
listener
- TheShadowAudioTrack.OnAudioDataWrittenListener
to be registered.
-
removeAudioDataListener
Removes anShadowAudioTrack.OnAudioDataWrittenListener
from theShadowAudioTrack
.- Parameters:
listener
- TheShadowAudioTrack.OnAudioDataWrittenListener
to be removed.
-
resetTest
-