AudioTrack.Play Method
Definition
Important
Some information relates to prerelease product that may be substantially modified before it’s released. Microsoft makes no warranties, express or implied, with respect to the information provided here.
Starts playing an AudioTrack.
[Android.Runtime.Register("play", "()V", "GetPlayHandler")]
public virtual void Play ();
[<Android.Runtime.Register("play", "()V", "GetPlayHandler")>]
abstract member Play : unit -> unit
override this.Play : unit -> unit
- Attributes
Exceptions
if the track isn't properly initialized
Remarks
Starts playing an AudioTrack.
If track's creation mode is #MODE_STATIC
, you must have called one of the write methods (#write(byte[], int, int)
, #write(byte[], int, int, int)
, #write(short[], int, int)
, #write(short[], int, int, int)
, #write(float[], int, int, int)
, or #write(ByteBuffer, int, int)
) prior to play().
If the mode is #MODE_STREAM
, you can optionally prime the data path prior to calling play(), by writing up to bufferSizeInBytes
(from constructor). If you don't call write() first, or if you call write() but with an insufficient amount of data, then the track will be in underrun state at play(). In this case, playback will not actually start playing until the data path is filled to a device-specific minimum level. This requirement for the path to be filled to a minimum level is also true when resuming audio playback after calling stop(). Similarly the buffer will need to be filled up again after the track underruns due to failure to call write() in a timely manner with sufficient data. For portability, an application should prime the data path to the maximum allowed by writing data until the write() method returns a short transfer count. This allows play() to start immediately, and reduces the chance of underrun.
As of android.os.Build.VERSION_CODES#S
the minimum level to start playing can be obtained using #getStartThresholdInFrames()
and set with #setStartThresholdInFrames(int)
.
Java documentation for android.media.AudioTrack.play()
.
Portions of this page are modifications based on work created and shared by the Android Open Source Project and used according to terms described in the Creative Commons 2.5 Attribution License.