| java.lang.Object | |
| ↳ | android.media.AudioTrack | 
       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
 achieved by "pushing" the data to the AudioTrack object using one of the
       
        
         write(byte[], int, int)
        
       
       and
       
        
         write(short[], int, int)
        
       
       methods.
      
       An AudioTrack instance can operate under two modes: static or streaming.
       
       In Streaming mode, the application writes a continuous stream of data to the AudioTrack, using
 one of the
       
        write()
       
       methods. These are blocking and return when the data has been
 transferred from the Java layer to the native layer and queued for playback. The streaming
 mode is most useful when playing blocks of audio data that for instance are:
       
       Upon creation, an AudioTrack object initializes its associated audio buffer.
 The size of this buffer, specified during the construction, determines how long an AudioTrack
 can play before running out of data.
       
       For an AudioTrack using the static mode, this size is the maximum size of the sound that can
 be played from it.
       
       For the streaming mode, data will be written to the audio sink in chunks of
 sizes less than or equal to the total buffer size.
 AudioTrack is not final and thus permits subclasses, but such use is not recommended.
      
| Nested Classes | |||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|
| 
          | 
        AudioTrack.OnPlaybackPositionUpdateListener | Interface definition for a callback to be invoked when the playback head position of an AudioTrack has reached a notification marker or has increased by a certain period. | |||||||||
| Constants | |||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|
| int | ERROR | Denotes a generic operation failure. | |||||||||
| int | ERROR_BAD_VALUE | Denotes a failure due to the use of an invalid value. | |||||||||
| int | ERROR_INVALID_OPERATION | Denotes a failure due to the improper use of a method. | |||||||||
| int | MODE_STATIC | Creation mode where audio data is transferred from Java to the native layer only once before the audio starts playing. | |||||||||
| int | MODE_STREAM | Creation mode where audio data is streamed from Java to the native layer as the audio is playing. | |||||||||
| int | PLAYSTATE_PAUSED | indicates AudioTrack state is paused | |||||||||
| int | PLAYSTATE_PLAYING | indicates AudioTrack state is playing | |||||||||
| int | PLAYSTATE_STOPPED | indicates AudioTrack state is stopped | |||||||||
| int | STATE_INITIALIZED | State of an AudioTrack that is ready to be used. | |||||||||
| int | STATE_NO_STATIC_DATA | State of a successfully initialized AudioTrack that uses static data, but that hasn't received that data yet. | |||||||||
| int | STATE_UNINITIALIZED | State of an AudioTrack that was not successfully initialized upon creation. | |||||||||
| int | SUCCESS | Denotes a successful operation. | |||||||||
| Public Constructors | |||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|
| 
           | 
         
           
           Class constructor.
           
          | 
        ||||||||||
| 
           | 
         
           
           Class constructor with audio session.
           
          | 
        ||||||||||
| Public Methods | |||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|
| 
           | 
         
           
           Attaches an auxiliary effect to the audio track.
           
          | 
        ||||||||||
| 
           | 
         
           
           Flushes the audio data currently queued for playback.
           
          | 
        ||||||||||
| 
           | 
         
           
           Returns the configured audio data format.
           
          | 
        ||||||||||
| 
           | 
         
           
           Returns the audio session ID.
           
          | 
        ||||||||||
| 
           | 
         
           
           Returns the configured channel configuration.
           
          | 
        ||||||||||
| 
           | 
         
           
           Returns the configured number of channels.
           
          | 
        ||||||||||
| 
           | 
         
           
           Returns the maximum valid volume value.
           
          | 
        ||||||||||
| 
           | 
         
           
           Returns the minimum buffer size required for the successful creation of an AudioTrack
 object to be created in the
            
         
            
             MODE_STREAM
            
           
           mode.
           | 
        ||||||||||
| 
           | 
         
           
           Returns the minimum valid volume value.
           
          | 
        ||||||||||
| 
           | 
         
           
           Returns the output sample rate in Hz for the specified stream type.
           
          | 
        ||||||||||
| 
           | 
         
           
           Returns marker position expressed in frames.
           
          | 
        ||||||||||
| 
           | 
         
           
           Returns the playback state of the AudioTrack instance.
           
          | 
        ||||||||||
| 
           | 
         
           
           Returns the playback head position expressed in frames.
           
          | 
        ||||||||||
| 
           | 
         
           
           Returns the current playback rate in Hz.
           
          | 
        ||||||||||
| 
           | 
         
           
           Returns the notification update period expressed in frames.
           
          | 
        ||||||||||
| 
           | 
         
           
           Returns the configured audio data sample rate in Hz
           
          | 
        ||||||||||
| 
           | 
         
           
           Returns the state of the AudioTrack instance.
           
          | 
        ||||||||||
| 
           | 
         
           
           Returns the type of audio stream this AudioTrack is configured for.
           
          | 
        ||||||||||
| 
           | 
         
           
           Poll for a timestamp on demand.
           
          | 
        ||||||||||
| 
           | 
         
           
           Pauses the playback of the audio data.
           
          | 
        ||||||||||
| 
           | 
         
           
           Starts playing an AudioTrack.
           
          | 
        ||||||||||
| 
           | 
         
           
           Releases the native AudioTrack resources.
           
          | 
        ||||||||||
| 
           | 
         
           
           Notifies the native resource to reuse the audio data already loaded in the native
 layer, that is to rewind to start of buffer.
           
          | 
        ||||||||||
| 
           | 
         
           
           Sets the send level of the audio track to the attached auxiliary effect
            
         
            
             attachAuxEffect(int)
            
           
           .
           | 
        ||||||||||
| 
           | 
         
           
           Sets the loop points and the loop count.
           
          | 
        ||||||||||
| 
           | 
         
           
           Sets the position of the notification marker.
           
          | 
        ||||||||||
| 
           | 
         
           
           Sets the playback head position.
           
          | 
        ||||||||||
| 
           | 
         
           
           Sets the listener the AudioTrack notifies when a previously set marker is reached or
 for each periodic playback head position update.
           
          | 
        ||||||||||
| 
           | 
         
           
           Sets the listener the AudioTrack notifies when a previously set marker is reached or
 for each periodic playback head position update.
           
          | 
        ||||||||||
| 
           | 
         
           
           Sets the playback sample rate for this track.
           
          | 
        ||||||||||
| 
           | 
         
           
           Sets the period for the periodic notification event.
           
          | 
        ||||||||||
| 
           | 
         
           
           Sets the specified left/right output volume values on the AudioTrack.
           
          | 
        ||||||||||
| 
           | 
         
           
           Stops playing the audio data.
           
          | 
        ||||||||||
| 
           | 
         
           
           Writes the audio data to the audio sink for playback (streaming mode),
 or copies audio data for later playback (static buffer mode).
           
          | 
        ||||||||||
| 
           | 
         
           
           Writes the audio data to the audio sink for playback (streaming mode),
 or copies audio data for later playback (static buffer mode).
           
          | 
        ||||||||||
| Protected Methods | |||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|
| 
           | 
         
           
           Invoked when the garbage collector has detected that this instance is no longer reachable.
           
          | 
        ||||||||||
| 
           | 
         
           
           
            This method was deprecated
      in API level 19.
    Only accessible by subclasses, which are not recommended for AudioTrack.
  See
             
         
             
              getProperty(String)
             
            
            for key
            
             
              PROPERTY_OUTPUT_FRAMES_PER_BUFFER
             
            
            .
           
           | 
        ||||||||||
| 
           | 
         
           
           
            This method was deprecated
      in API level 19.
    Only accessible by subclasses, which are not recommended for AudioTrack.
           
           
          | 
        ||||||||||
| 
          
           [Expand]
          
           
           Inherited Methods
           
          | 
        |||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|
          
            
          
          From class
          
           java.lang.Object
          
           | 
        |||||||||||
Denotes a generic operation failure.
Denotes a failure due to the use of an invalid value.
Denotes a failure due to the improper use of a method.
Creation mode where audio data is transferred from Java to the native layer only once before the audio starts playing.
Creation mode where audio data is streamed from Java to the native layer as the audio is playing.
indicates AudioTrack state is paused
indicates AudioTrack state is playing
indicates AudioTrack state is stopped
State of an AudioTrack that is ready to be used.
State of a successfully initialized AudioTrack that uses static data, but that hasn't received that data yet.
State of an AudioTrack that was not successfully initialized upon creation.
Denotes a successful operation.
Class constructor.
| streamType | 
           the type of the audio stream. See
           
            
             STREAM_VOICE_CALL
            
           
           ,
           
            
             STREAM_SYSTEM
            
           
           ,
           
            
             STREAM_RING
            
           
           ,
           
            
             STREAM_MUSIC
            
           
           ,
           
            
             STREAM_ALARM
            
           
           , and
           
            
             STREAM_NOTIFICATION
            
           
           .
           | 
         
|---|---|
| sampleRateInHz | the initial source sample rate expressed in Hz. | 
| channelConfig | 
           describes the configuration of the audio channels.
   See
           
            
             CHANNEL_OUT_MONO
            
           
           and
           
            
             CHANNEL_OUT_STEREO
            
           
           | 
         
| audioFormat | 
           the format in which the audio data is represented.
   See
           
            
             ENCODING_PCM_16BIT
            
           
           and
           
            
             ENCODING_PCM_8BIT
            
           
           | 
         
| bufferSizeInBytes | 
           the total size (in bytes) of the internal buffer where audio data is
   read from for playback.
   If track's creation mode is
           
            
             MODE_STREAM
            
           
           , you can write data into
   this buffer in chunks less than or equal to this size, and it is typical to use
   chunks of 1/2 of the total size to permit double-buffering.
   If the track's creation mode is
           
            
             MODE_STATIC
            
           
           ,
   this is the maximum length sample, or audio clip, that can be played by this instance.
   See
           
            
             getMinBufferSize(int, int, int)
            
           
           to determine the minimum required buffer size
   for the successful creation of an AudioTrack instance in streaming mode. Using values
   smaller than getMinBufferSize() will result in an initialization failure.
           | 
         
| mode | 
           streaming or static buffer. See
           
            
             MODE_STATIC
            
           
           and
           
            
             MODE_STREAM
            
           
           | 
         
| IllegalArgumentException | 
|---|
         Class constructor with audio session. Use this constructor when the AudioTrack must be
 attached to a particular audio session. The primary use of the audio session ID is to
 associate audio effects to a particular instance of AudioTrack: if an audio session ID
 is provided when creating an AudioEffect, this effect will be applied only to audio tracks
 and media players in the same session and not to the output mix.
 When an AudioTrack is created without specifying a session, it will create its own session
 which can be retrieved by calling the
         
          
           getAudioSessionId()
          
         
         method.
 If a non-zero session ID is provided, this AudioTrack will share effects attached to this
 session
 with all other media players or audio tracks in the same session, otherwise a new session
 will be created for this track if none is supplied.
        
| streamType | 
           the type of the audio stream. See
           
            
             STREAM_VOICE_CALL
            
           
           ,
           
            
             STREAM_SYSTEM
            
           
           ,
           
            
             STREAM_RING
            
           
           ,
           
            
             STREAM_MUSIC
            
           
           ,
           
            
             STREAM_ALARM
            
           
           , and
           
            
             STREAM_NOTIFICATION
            
           
           .
           | 
         
|---|---|
| sampleRateInHz | the initial source sample rate expressed in Hz. | 
| channelConfig | 
           describes the configuration of the audio channels.
   See
           
            
             CHANNEL_OUT_MONO
            
           
           and
           
            
             CHANNEL_OUT_STEREO
            
           
           | 
         
| audioFormat | 
           the format in which the audio data is represented.
   See
           
            
             ENCODING_PCM_16BIT
            
           
           and
           
            
             ENCODING_PCM_8BIT
            
           
           | 
         
| bufferSizeInBytes | 
           the total size (in bytes) of the buffer where audio data is read
   from for playback. If using the AudioTrack in streaming mode, you can write data into
   this buffer in smaller chunks than this size. If using the AudioTrack in static mode,
   this is the maximum size of the sound that will be played for this instance.
   See
           
            
             getMinBufferSize(int, int, int)
            
           
           to determine the minimum required buffer size
   for the successful creation of an AudioTrack instance in streaming mode. Using values
   smaller than getMinBufferSize() will result in an initialization failure.
           | 
         
| mode | 
           streaming or static buffer. See
           
            
             MODE_STATIC
            
           
           and
           
            
             MODE_STREAM
            
           
           | 
         
| sessionId | Id of audio session the AudioTrack must be attached to | 
| IllegalArgumentException | 
|---|
Attaches an auxiliary effect to the audio track. A typical auxiliary effect is a reverberation effect which can be applied on any sound source that directs a certain amount of its energy to this effect. This amount is defined by setAuxEffectSendLevel(). .
         After creating an auxiliary effect (e.g.
         
          
           EnvironmentalReverb
          
         
         ), retrieve its ID with
         
          
           getId()
          
         
         and use it when calling
 this method to attach the audio track to the effect.
        
To detach the effect from the audio track, call this method with a null effect id.
| effectId | system wide unique id of the effect to attach | 
|---|
           
            SUCCESS
           
          
          ,
          
           
            ERROR_INVALID_OPERATION
           
          
          ,
          
           
            ERROR_BAD_VALUE
           
          
         
         Flushes the audio data currently queued for playback. Any data that has
 not been played back will be discarded.  No-op if not stopped or paused,
 or if the track's creation mode is not
         
          
           MODE_STREAM
          
         
         .
        
         Returns the configured audio data format. See
         
          
           ENCODING_PCM_16BIT
          
         
         and
         
          
           ENCODING_PCM_8BIT
          
         
         .
        
Returns the audio session ID.
         Returns the configured channel configuration.
 See
         
          
           CHANNEL_OUT_MONO
          
         
         and
         
          
           CHANNEL_OUT_STEREO
          
         
         .
        
Returns the maximum valid volume value. Volume values set above this one will be clamped at this value.
         Returns the minimum buffer size required for the successful creation of an AudioTrack
 object to be created in the
         
          
           MODE_STREAM
          
         
         mode. Note that this size doesn't
 guarantee a smooth playback under load, and higher values should be chosen according to
 the expected frequency at which the buffer will be refilled with additional data to play.
 For example, if you intend to dynamically set the source sample rate of an AudioTrack
 to a higher value than the initial source sample rate, be sure to configure the buffer size
 based on the highest planned sample rate.
        
| sampleRateInHz | the source sample rate expressed in Hz. | 
|---|---|
| channelConfig | 
           describes the configuration of the audio channels.
   See
           
            
             CHANNEL_OUT_MONO
            
           
           and
           
            
             CHANNEL_OUT_STEREO
            
           
           | 
         
| audioFormat | 
           the format in which the audio data is represented.
   See
           
            
             ENCODING_PCM_16BIT
            
           
           and
           
            
             ENCODING_PCM_8BIT
            
           
           | 
         
           
            ERROR_BAD_VALUE
           
          
          if an invalid parameter was passed,
   or
          
           
            ERROR
           
          
          if unable to query for output properties,
   or the minimum buffer size expressed in bytes.
         Returns the minimum valid volume value. Volume values set under this one will be clamped at this value.
Returns the output sample rate in Hz for the specified stream type.
Returns marker position expressed in frames.
           
            getPlaybackHeadPosition()
           
          
          ,
 or zero if marker is disabled.
         Returns the playback state of the AudioTrack instance.
Returns the playback head position expressed in frames. Though the "int" type is signed 32-bits, the value should be reinterpreted as if it is unsigned 32-bits. That is, the next position after 0x7FFFFFFF is (int) 0x80000000. This is a continuously advancing counter. It will wrap (overflow) periodically, for example approximately once every 27:03:11 hours:minutes:seconds at 44.1 kHz. It is reset to zero by flush(), reload(), and stop().
Returns the notification update period expressed in frames. Zero means that no position update notifications are being delivered.
Returns the configured audio data sample rate in Hz
Returns the state of the AudioTrack instance. This is useful after the AudioTrack instance has been created to check if it was initialized properly. This ensures that the appropriate resources have been acquired.
         Returns the type of audio stream this AudioTrack is configured for.
 Compare the result against
         
          
           STREAM_VOICE_CALL
          
         
         ,
         
          
           STREAM_SYSTEM
          
         
         ,
         
          
           STREAM_RING
          
         
         ,
         
          
           STREAM_MUSIC
          
         
         ,
         
          
           STREAM_ALARM
          
         
         ,
         
          
           STREAM_NOTIFICATION
          
         
         , or
         
          
           STREAM_DTMF
          
         
         .
        
Poll for a timestamp on demand. Use if you need to get the most recent timestamp outside of the event callback handler. Calling this method too often may be inefficient; if you need a high-resolution mapping between frame position and presentation time, consider implementing that at application level, based on low-resolution timestamps. The audio data at the returned position may either already have been presented, or may have not yet been presented but is committed to be presented. It is not possible to request the time corresponding to a particular position, or to request the (fractional) position corresponding to a particular time. If you need such features, consider implementing them at application level.
| timestamp | a reference to a non-null AudioTimestamp instance allocated and owned by caller. | 
|---|
         Pauses the playback of the audio data. Data that has not been played
 back will not be discarded. Subsequent calls to
         
          
           play()
          
         
         will play
 this data back. See
         
          
           flush()
          
         
         to discard this data.
        
| IllegalStateException | 
|---|
         Starts playing an AudioTrack.
 If track's creation mode is
         
          
           MODE_STATIC
          
         
         , you must have called write() prior.
        
| IllegalStateException | 
|---|
         Notifies the native resource to reuse the audio data already loaded in the native
 layer, that is to rewind to start of buffer.
 The track's creation mode must be
         
          
           MODE_STATIC
          
         
         .
        
           
            SUCCESS
           
          
          ,
          
           
            ERROR_BAD_VALUE
           
          
          ,
          
           
            ERROR_INVALID_OPERATION
           
          
         
         Sets the send level of the audio track to the attached auxiliary effect
         
          
           attachAuxEffect(int)
          
         
         .  The level value range is 0.0f to 1.0f.
 Values are clamped to the (0.0f, 1.0f) interval if outside this range.
        
By default the send level is 0.0f, so even if an effect is attached to the player this method must be called for the effect to be applied.
Note that the passed level value is a raw scalar. UI controls should be scaled logarithmically: the gain applied by audio framework ranges from -72dB to 0dB, so an appropriate conversion from linear UI input x to level is: x == 0 -> level = 0 0 < x <= R -> level = 10^(72*(x-R)/20/R)
| level | send level scalar | 
|---|
           
            SUCCESS
           
          
          ,
          
           
            ERROR_INVALID_OPERATION
           
          
         
         Sets the loop points and the loop count. The loop can be infinite.
 Similarly to setPlaybackHeadPosition,
 the track must be stopped or paused for the loop points to be changed,
 and must use the
         
          
           MODE_STATIC
          
         
         mode.
        
| startInFrames | loop start marker expressed in frames Zero corresponds to start of buffer. The start marker must not be greater than or equal to the buffer size in frames, or negative. | 
|---|---|
| endInFrames | loop end marker expressed in frames The total buffer size in frames corresponds to end of buffer. The end marker must not be greater than the buffer size in frames. For looping, the end marker must not be less than or equal to the start marker, but to disable looping it is permitted for start marker, end marker, and loop count to all be 0. | 
| loopCount | the number of times the loop is looped. A value of -1 means infinite looping, and 0 disables looping. | 
           
            SUCCESS
           
          
          ,
          
           
            ERROR_BAD_VALUE
           
          
          ,
          
           
            ERROR_INVALID_OPERATION
           
          
         Sets the position of the notification marker. At most one marker can be active.
| markerInFrames | 
           marker position in wrapping frame units similar to
           
            
             getPlaybackHeadPosition()
            
           
           , or zero to disable the marker.
 To set a marker at a position which would appear as zero due to wraparound,
 a workaround is to use a non-zero position near zero, such as -1 or 1.
           | 
         
|---|
           
            SUCCESS
           
          
          ,
          
           
            ERROR_BAD_VALUE
           
          
          ,
          
           
            ERROR_INVALID_OPERATION
           
          
         
         Sets the playback head position.
 The track must be stopped or paused for the position to be changed,
 and must use the
         
          
           MODE_STATIC
          
         
         mode.
        
| positionInFrames | playback head position expressed in frames Zero corresponds to start of buffer. The position must not be greater than the buffer size in frames, or negative. | 
|---|
           
            SUCCESS
           
          
          ,
          
           
            ERROR_BAD_VALUE
           
          
          ,
          
           
            ERROR_INVALID_OPERATION
           
          
         Sets the listener the AudioTrack notifies when a previously set marker is reached or for each periodic playback head position update. Notifications will be received in the same thread as the one in which the AudioTrack instance was created.
Sets the listener the AudioTrack notifies when a previously set marker is reached or for each periodic playback head position update. Use this method to receive AudioTrack events in the Handler associated with another thread than the one in which you created the AudioTrack instance.
| handler | the Handler that will receive the event notification messages. | 
|---|
         Sets the playback sample rate for this track. This sets the sampling rate at which
 the audio data will be consumed and played back
 (as set by the sampleRateInHz parameter in the
         
          
           AudioTrack(int, int, int, int, int, int)
          
         
         constructor),
 not the original sampling rate of the
 content. For example, setting it to half the sample rate of the content will cause the
 playback to last twice as long, but will also result in a pitch shift down by one octave.
 The valid sample rate range is from 1 Hz to twice the value returned by
         
          
           getNativeOutputSampleRate(int)
          
         
         .
        
| sampleRateInHz | the sample rate expressed in Hz | 
|---|
           
            SUCCESS
           
          
          ,
          
           
            ERROR_BAD_VALUE
           
          
          ,
          
           
            ERROR_INVALID_OPERATION
           
          
         Sets the period for the periodic notification event.
| periodInFrames | update period expressed in frames | 
|---|
           
            SUCCESS
           
          
          ,
          
           
            ERROR_INVALID_OPERATION
           
          
         
         Sets the specified left/right output volume values on the AudioTrack. Values are clamped
 to the (
         
          
           getMinVolume()
          
         
         ,
         
          
           getMaxVolume()
          
         
         ) interval if outside this range.
        
| leftVolume | output attenuation for the left channel. A value of 0.0f is silence, a value of 1.0f is no attenuation. | 
|---|---|
| rightVolume | output attenuation for the right channel | 
           
            SUCCESS
           
          
          ,
          
           
            ERROR_INVALID_OPERATION
           
          
         
         Stops playing the audio data.
 When used on an instance created in
         
          
           MODE_STREAM
          
         
         mode, audio will stop playing
 after the last buffer that was written has been played. For an immediate stop, use
         
          
           pause()
          
         
         , followed by
         
          
           flush()
          
         
         to discard audio data that hasn't been played
 back yet.
        
| IllegalStateException | 
|---|
         Writes the audio data to the audio sink for playback (streaming mode),
 or copies audio data for later playback (static buffer mode).
 In streaming mode, will block until all data has been written to the audio sink.
 In static buffer mode, copies the data to the buffer starting at offset 0.
 Note that the actual playback of this data might occur after this function
 returns. This function is thread safe with respect to
         
          
           stop()
          
         
         calls,
 in which case all of the specified data might not be written to the audio sink.
        
| audioData | the array that holds the data to play. | 
|---|---|
| offsetInShorts | the offset expressed in shorts in audioData where the data to play starts. | 
| sizeInShorts | the number of shorts to read in audioData after the offset. | 
           
            ERROR_INVALID_OPERATION
           
          
          if the object wasn't properly initialized, or
          
           
            ERROR_BAD_VALUE
           
          
          if
    the parameters don't resolve to valid data and indexes.
         
         Writes the audio data to the audio sink for playback (streaming mode),
 or copies audio data for later playback (static buffer mode).
 In streaming mode, will block until all data has been written to the audio sink.
 In static buffer mode, copies the data to the buffer starting at offset 0.
 Note that the actual playback of this data might occur after this function
 returns. This function is thread safe with respect to
         
          
           stop()
          
         
         calls,
 in which case all of the specified data might not be written to the audio sink.
        
| audioData | the array that holds the data to play. | 
|---|---|
| offsetInBytes | the offset expressed in bytes in audioData where the data to play starts. | 
| sizeInBytes | the number of bytes to read in audioData after the offset. | 
           
            ERROR_INVALID_OPERATION
           
          
          if the object wasn't properly initialized, or
          
           
            ERROR_BAD_VALUE
           
          
          if
    the parameters don't resolve to valid data and indexes.
         Invoked when the garbage collector has detected that this instance is no longer reachable. The default implementation does nothing, but this method can be overridden to free resources.
         Note that objects that override
         
          finalize
         
         are significantly more expensive than
 objects that don't. Finalizers may be run a long time after the object is no longer
 reachable, depending on memory pressure, so it's a bad idea to rely on them for cleanup.
 Note also that finalizers are run on a single VM-wide finalizer thread,
 so doing blocking work in a finalizer is a bad idea. A finalizer is usually only necessary
 for a class that has a native peer and needs to call a native method to destroy that peer.
 Even then, it's better to provide an explicit
         
          close
         
         method (and implement
         
          
           Closeable
          
         
         ), and insist that callers manually dispose of instances. This
 works well for something like files, but less well for something like a
         
          BigInteger
         
         where typical calling code would have to deal with lots of temporaries. Unfortunately,
 code that creates lots of temporaries is the worst kind of code from the point of view of
 the single finalizer thread.
        
         If you
         
          must
         
         use finalizers, consider at least providing your own
         
          
           ReferenceQueue
          
         
         and having your own thread process that queue.
        
         Unlike constructors, finalizers are not automatically chained. You are responsible for
 calling
         
          super.finalize()
         
         yourself.
        
Uncaught exceptions thrown by finalizers are ignored and do not terminate the finalizer thread. See Effective Java Item 7, "Avoid finalizers" for more.
        
         This method was deprecated
      in API level 19.
        
        
        Only accessible by subclasses, which are not recommended for AudioTrack.
  See
        
         
          getProperty(String)
         
        
        for key
        
         
          PROPERTY_OUTPUT_FRAMES_PER_BUFFER
         
        
        .
       
         Returns the "native frame count", derived from the bufferSizeInBytes specified at
  creation time and converted to frame units.
  If track's creation mode is
         
          
           MODE_STATIC
          
         
         ,
  it is equal to the specified bufferSizeInBytes converted to frame units.
  If track's creation mode is
         
          
           MODE_STREAM
          
         
         ,
  it is typically greater than or equal to the specified bufferSizeInBytes converted to frame
  units; it may be rounded up to a larger value if needed by the target device implementation.
        
        
         This method was deprecated
      in API level 19.
        
        
        Only accessible by subclasses, which are not recommended for AudioTrack.
       
Sets the initialization state of the instance. This method was originally intended to be used in an AudioTrack subclass constructor to set a subclass-specific post-initialization state. However, subclasses of AudioTrack are no longer recommended, so this method is obsolete.
| state | the state of the AudioTrack instance | 
|---|