Skip to content
Titanium SDK
Version13.3.1

You are reading 13.3.1. See this page in 13.4.1.

Titanium.Media.AudioPlayer

proxyAndroidiPhoneiPadmacOSsince 0.9

Extends Titanium.Proxy

An audio player object used for streaming audio to the device, and low-level control of the audio playback.

On Android, when you are done playing a given audio file, you must call the release method to stop buffering audio data and release associated system resources. Since 7.5.0, this method is available on iOS as well and will release all audio-player related resources. After this method has been called, the object should not be accessed anymore.

On iOS, you can control how the audio stream interacts with other system sounds by setting Titanium.Media.audioSessionCategory. Since Titanium 7.5.0, this API uses the AVPlayer API for a more modern and performant audio playback.

Use the Titanium.Media.createAudioPlayer method to create an audio player.

Examples

Audio Streaming

The following example demonstrates using the AudioPlayer object to stream audio.

var win = Ti.UI.createWindow({
    title: 'Audio Test',
    backgroundColor: '#fff',
    layout: 'vertical'
});

var startStopButton = Ti.UI.createButton({
    title: 'Start/Stop Streaming',
    top: 10,
    width: 200,
    height: 40
});

var pauseResumeButton = Ti.UI.createButton({
    title: 'Pause/Resume Streaming',
    top: 10,
    width: 200,
    height: 40,
    enabled: false
});

win.add(startStopButton);
win.add(pauseResumeButton);

// allowBackground: true on Android allows the
// player to keep playing when the app is in the
// background.
var audioPlayer = Ti.Media.createAudioPlayer({
    url: 'www.example.com/podcast.mp3',
    allowBackground: true
});

startStopButton.addEventListener('click', function() {
    // When paused, playing returns false.
    // If both are false, playback is stopped.
    if (audioPlayer.playing || audioPlayer.paused) {
        audioPlayer.stop();
        pauseResumeButton.enabled = false;
        audioPlayer.release();
    } else {
        audioPlayer.start();
        pauseResumeButton.enabled = true;
    }
});

pauseResumeButton.addEventListener('click', function() {
    if (audioPlayer.paused) {
        audioPlayer.start();
    } else {
        audioPlayer.pause();
    }
});

audioPlayer.addEventListener('progress', function(e) {
    Ti.API.info('Time Played: ' + Math.round(e.progress) + ' milliseconds');
});

audioPlayer.addEventListener('change', function(e) {
    Ti.API.info('State: ' + e.description + ' (' + e.state + ')');
});

win.addEventListener('close', function() {
    audioPlayer.stop();
    audioPlayer.release();
});

win.open();

Properties 38

allowBackground

BooleanAndroid

Boolean to indicate if audio should continue playing even if the associated Android Activity is paused.

Setting allowBackground to true allows the audio to continue playing, for example, if the application is in the background.

Default: false

allowsExternalPlayback

BooleaniPhoneiPadmacOSsince 7.5.0

Indicates whether the player allows switching to "external playback" mode.

Default: true

apiName

Stringsince Android 3.2.0, iPhone 3.2.0, iPad 3.2.0, macOS 9.2.0read-only

Inherited from Titanium.Proxy

The name of the API that this proxy corresponds to.

AUDIO_TYPE_ALARM

NumberAndroidsince 6.2.0read-only

Used to identify the volume of audio streams for alarms.

AUDIO_TYPE_MEDIA

NumberAndroidsince 6.2.0read-only

Used to identify the volume of audio streams for media playback.

AUDIO_TYPE_NOTIFICATION

NumberAndroidsince 6.2.0read-only

Used to identify the volume of audio streams for notifications.

AUDIO_TYPE_RING

NumberAndroidsince 6.2.0read-only

Used to identify the volume of audio streams for the phone ring.

AUDIO_TYPE_SIGNALLING

NumberAndroidsince 6.2.0read-only

Used to identify the volume of audio streams for DTMF tones or beeps.

AUDIO_TYPE_VOICE

NumberAndroidsince 6.2.0read-only

Used to identify the volume of audio streams for voice calls.

audioFocus

BooleanAndroid

Focuses on the current audio player and stops other audio playing.

If true then all other audio sources will be stopped when Titanium.AudioPlayer is started or resumed.

Default: false

audioSessionId

NumberAndroidsince 10.0.0read-only

Returns the audio session id.

bitRate

NumberiPhoneiPadmacOS

Bit rate of the current playback stream.

bubbleParent

Booleansince Android 3.0.0, iPhone 3.0.0, iPad 3.0.0, macOS 9.2.0

Inherited from Titanium.Proxy

Indicates if the proxy will bubble an event to its parent.

Default: true

bufferSize

NumberiPhoneiPadmacOS

Size of the buffer used for streaming, in milliseconds.

Prior to Titanium 7.5.0, this property was set in bytes. Since the internal iOS API moved to the more modern AVPlayer, this property now works with milliseconds instead.

duration

Numbersince 3.3.0read-only

Estimated duration in milliseconds of the file being played.

May return 0 when playing a live stream.

externalPlaybackActive

BooleaniPhoneiPadmacOSsince 7.5.0read-only

Indicates whether the player is currently playing video in "external playback" mode.

idle

BooleaniPhoneiPadmacOSread-only

Boolean indicating if the player is idle.

true if the player is in the initialized state: that is, not playing, paused, or waiting for data.

muted

Booleansince 7.5.0

Indicates whether or not audio output of the player is muted.

Only affects audio muting for the player instance and not for the device.

paused

Boolean

Boolean indicating if audio playback is paused.

playing

Booleanread-only

Boolean indicating if audio is currently playing.

Returns false if playback is stopped or paused.

progress

NumberiPhoneiPadmacOSread-only

Current playback progress, in milliseconds.

Returns zero if bitRate has not yet been detected.

rate

NumberiPhoneiPadmacOSsince 7.5.0

Indicates the desired rate of playback; 0.0 means "paused", 1.0 indicates a desire to play at the natural rate of the current item. In addition, 2.0 would mean that the audio plays twice as fast.

Setting the value of rate to 0.0 pauses playback, causing the value of the state property change to Titanium.Media.AUDIO_STATE_PAUSED. Setting the rate to a non-zero value causes the value of the state property to become either <Titanium.Media.AUDIO_STATE_WAITING_FOR_QUEUE> or Titanium.Media.AUDIO_STATE_PLAYING, depending on whether sufficient media data has been buffered for playback to occur and whether the player's default behavior of waiting in order to minimize stalling is permitted.

Default: 0

time

NumberAndroidsince 3.3.0

Current playback position of the audio.

Time is reported in milliseconds.

url

String

URL for the audio stream.

waiting

BooleaniPhoneiPadmacOSread-only

Boolean indicating if the playback is waiting for audio data from the network.

This property is true if the player is in any of the waiting states, including buffering, starting, waiting for data, and waiting for queue.

Methods 18

Inherited from Titanium.Proxy

Adds the specified callback as an event listener for the named event.

Parameters
ParametersTypeDescription
nameString

Name of the event.

callbackCallback<Titanium.Event>

Callback function to invoke when the event is fired.

4 fields
bubbles Boolean

True if the event will try to bubble up if possible.

cancelBubble Boolean

Set to true to stop the event from bubbling.

source Object

Source object that fired the event.

type String

Name of the event fired.

Inherited from Titanium.Proxy

Fires a synthesized event to any registered listeners.

Parameters
ParametersTypeDescription
nameString

Name of the event.

event?Dictionary

A dictionary of keys and values to add to the Titanium.Event object sent to the listeners.

getPaused

deprecatediPhoneiPadmacOS

Deprecated since 7.5.0, removed in 10.0.0

Use the cross-platform API <Titanium.Media.AudioPlayer.paused> property instead.

Returns the value of the paused property.

Returns Boolean

getPlaying

deprecatediPhoneiPadmacOS

Deprecated since 7.5.0, removed in 10.0.0

Use the cross-platform API <Titanium.Media.AudioPlayer.playing> property instead.

Returns the value of the playing property.

Returns Boolean

isPaused

deprecatedAndroid

Deprecated since 7.5.0, removed in 10.0.0

Use the cross-platform API <Titanium.Media.AudioPlayer.paused> property instead.

Returns the value of the paused property.

Returns Boolean

isPlaying

deprecatedAndroid

Deprecated since 7.5.0, removed in 10.0.0

Use the cross-platform API <Titanium.Media.AudioPlayer.playing> property instead.

Returns the value of the playing property.

Returns Boolean

Pauses audio playback.

On iOS, the pause call operates as a toggle. If the stream is already paused, calling pause again resumes playing the stream.

On Android, the pause call does nothing if the stream is already paused.

On both platforms, calling Titanium.Media.AudioPlayer.start on a paused stream resumes play.

release

since Android 0.9, iPhone 7.5.0, iPad 7.5.0

Stops buffering audio data and releases audio resources.

On Android, this method should be called when you are done streaming a given audio object, to release underlying resources, including buffered data.

On iOS, this method can be called for parity to release the current player instance and it's observers. Note: If you are listening to the progress event, you should remove and re-add the event listener.

Inherited from Titanium.Proxy

Removes the specified callback as an event listener for the named event.

Parameters
ParametersTypeDescription
nameString

Name of the event.

callbackCallback<Titanium.Event>

Callback function to remove. Must be the same function passed to addEventListener.

4 fields
bubbles Boolean

True if the event will try to bubble up if possible.

cancelBubble Boolean

Set to true to stop the event from bubbling.

source Object

Source object that fired the event.

type String

Name of the event fired.

restart

since 7.5.0

Restarts (stops and stars) audio playback.

seekToTime

iPhoneiPadmacOSsince 7.5.0

Moves the playback cursor and invokes the specified block when the seek operation has either been completed or been interrupted.

Use this method to seek to a specified time for the current player item and to be notified by the seek event when the seek operation is complete.

Parameters
ParametersTypeDescription
timeNumber

The time in milliseconds to seek to.

Starts or resumes audio playback.

stateDescription

iPhoneiPadmacOS

Converts a state value into a text description suitable for display.

Parameters
ParametersTypeDescription
stateNumber

State value to convert.

Returns String

Stops audio playback.

Events 6

Fired when the state of the playback changes.

This event can be generated by programmatic events, such as pausing or stopping the audio, and also by external events, such as the current state of network buffering.

Event properties
Event propertiesTypeDescription
stateNumber

Current state of playback.

descriptionNumber

Text description of the state of playback.

complete

since Android 0.9, iPhone 7.5.0, iPad 7.5.0

Fired when the audio has finished playing.

Event properties
Event propertiesTypeDescription
successBoolean

Indicates if the sound was played successfully. Returns true if request succeeded, false otherwise.

errorString

Error message, if any returned. Will be undefined if success is true.

codeNumber

Error code. Error code will be 0 if success is true, nonzero otherwise. If the error was generated by the operating system, that system's error value is used. Otherwise, this value will be -1.

error

since 4.1.0

Fired when there's an error.

Event properties
Event propertiesTypeDescription
errorString

Error message.

codeNumber

Error code. Different between Android and iOS.

metadata

iPhoneiPadmacOSsince 7.5.0

Fired when the timed metadata was encountered most recently within the media as it plays.

Use this event to receive meta information about real time streams and buffers, for example the title of an active radio stream. Read more about timed metadata in the Apple docs.

Event properties
Event propertiesTypeDescription
itemsArray<TiMetadataItemType>

An array of metadata items containing relevant information about the current media item.

4 fields
extraAttributes Dictionary

A dictionary of the additional attributes.

key String

The key of the metadata item, e.g. "title".

keySpace String

The key-path of the metadata item.

value String | Number | Boolean

The value of the metadata item. Can be represented as various types.

Fired once per second with the current progress during playback.

Event properties
Event propertiesTypeDescription
progressNumber

Current progress, in milliseconds.

seek

iPhoneiPadmacOS

Fired once the seekToTime method completes.

Event properties
Event propertiesTypeDescription
finishedBoolean

The event for any prior seek request that is still in process will be invoked immediately with the finished parameter set to false. If the new request completes without being interrupted by another seek request or by any other operation this event will be invoked with the finished parameter set to true.