Triton Mobile SDK for Android
Public Member Functions | Static Public Member Functions | Static Public Attributes | List of all members
com.tritondigital.player.SbmPlayer Class Reference

Side-Band Metadata player. More...

Inheritance diagram for com.tritondigital.player.SbmPlayer:
com.tritondigital.player.MediaPlayer

Public Member Functions

 SbmPlayer (Context context, Bundle settings)
 Constructor.
 
int getOffset ()
 Returns the metadata/audio offset in milliseconds.
 
void setOffset (int offset)
 Sets the offset in milliseconds of to apply to the side band player to synchronise it with you media stream.
 
- Public Member Functions inherited from com.tritondigital.player.MediaPlayer
 MediaPlayer (Context context, Bundle settings)
 Constructor. More...
 
abstract int getDuration ()
 Returns the duration of the current media in milliseconds. More...
 
int getErrorCode ()
 
Bundle getLastCuePoint ()
 Returns the last received cue point.
 
int getLastErrorCode ()
 Returns the last error code.
 
OnMetaDataReceivedListener getMetadataListener ()
 Returns the metadata listener.
 
OnCuePointReceivedListener getOnCuePointReceivedListener ()
 Returns the cue point listener.
 
OnInfoListener getOnInfoListener ()
 Returns the info listener.
 
OnStateChangedListener getOnStateChangedListener ()
 Returns the state changed listener.
 
abstract int getPosition ()
 Returns the current position playback position in milliseconds.
 
Bundle getSettings ()
 Returns the settings of this player.
 
int getState ()
 Returns the player's state.
 
abstract float getVolume ()
 Returns the current volume (0.0f to 1.0f)
 
boolean isPausable ()
 Returns true if the media can be paused at the current state.
 
boolean isSeekable ()
 Returns true if the media is seekable in the current state. More...
 
abstract boolean isTimeshiftStreaming ()
 Returns if the player is in timeshift mode.
 
final void pause ()
 Pauses the playback so it can be resumed at the same position by calling play(). More...
 
final void play (boolean timeshiftStreaming)
 Starts the playback.
 
final void release ()
 Releases the player resources. More...
 
void seek (int delta)
 Seek to a time from the current position.
 
final void seekTo (int position)
 Seek to the provided position. More...
 
final void seekTo (int position, int original)
 Seek to the provided position. More...
 
void setOnAnalyticsReceivedListener (OnAnalyticsReceivedListener listener)
 Sets the analytics changed listener.
 
void setOnCloudStreamInfoReceivedListener (OnCloudStreamInfoReceivedListener listener)
 Sets the timeshift programs listener.
 
void setOnCuePointReceivedListener (OnCuePointReceivedListener listener)
 Sets the cue point event listener.
 
void setOnInfoListener (OnInfoListener listener)
 Sets the info listener.
 
void setOnMetaDataReceivedListener (OnMetaDataReceivedListener listener)
 Sets the cue point event listener.
 
void setOnStateChangedListener (OnStateChangedListener listener)
 Sets the state changed listener.
 
abstract void setVolume (float volume)
 Sets the volume on this player. More...
 
final void stop ()
 Stops the playback.
 

Static Public Member Functions

static String generateSbmId ()
 Generates a Side-Band Metadata session ID. More...
 
- Static Public Member Functions inherited from com.tritondigital.player.MediaPlayer
static String debugErrorToStr (int errorCode)
 Utility method to convert an error code to a debug string. More...
 
static String debugInfoToStr (int info)
 Utility method to convert an info code to a debug string. More...
 
static String debugStateToStr (int state)
 Utility method to convert the player state to a debug string. More...
 
static boolean isPlayValidInState (int state)
 Returns true if a play request is valid in the provided state.
 
static boolean isTransitionValid (int state0, int state1)
 Returns true if the provided state transition is valid. More...
 

Static Public Attributes

static final String SETTINGS_SBM_URL = PlayerConsts.SBM_URL
 String - SideBand Metadata URL
 
- Static Public Attributes inherited from com.tritondigital.player.MediaPlayer
static final int DURATION_LIVE_STREAM = Integer.MAX_VALUE
 Live stream.
 
static final int DURATION_UNKNOWN = -1
 Unknown duration.
 
static final int ERROR_CONNECTION_FAILED = 211
 Error code indicating a connection problem to the server.
 
static final int ERROR_CONNECTION_TIMEOUT = 408
 Error code indicating than the connection has timed out.
 
static final int ERROR_END_OF_MEDIA = ERROR_UNEXPECTED_END_OF_MEDIA
 
static final int ERROR_EXOPLAYER_BUFFER_RECONNECT = 212
 Error code indicating that low delay increased 3 times an still did not fill the buffer.
 
static final int ERROR_EXOPLAYER_BUFFER_TIMEOUT = 218
 Error code indicating buffer timed out. More...
 
static final int ERROR_EXOPLAYER_ON_ERROR = 219
 Error code indicating buffer timed out. More...
 
static final int ERROR_GEOBLOCKED = 453
 Error code indicating that the stream can't be used in the user location.
 
static final int ERROR_INVALID_URL = 216
 Error code indicating that the URL isn't in a valid format.
 
static final int ERROR_LOW_LEVEL_PLAYER_ERROR = 210
 Error code indicating an error in the OS player or Google Cast.
 
static final int ERROR_NO_NETWORK = 217
 Error code indicating the lack of network connectivity.
 
static final int ERROR_NOT_FOUND = 404
 Error code indicating that the input source couldn't be found.
 
static final int ERROR_SERVICE_UNAVAILABLE = 503
 Error code indicating that no server is available.
 
static final int ERROR_UNEXPECTED_END_OF_MEDIA = 213
 Error code indicating the end of a media which shouldn't occur on live streaming.
 
static final int ERROR_UNEXPECTED_END_OF_MEDIA_ANDROID_PLAYER = 214
 Error code indicating the end of a media which shouldn't occur on live streaming.
 
static final int INFO_ALTERNATE_MOUNT = 270
 A the player has connected to an alternate mount.
 
static final int INFO_BUFFERING_COMPLETED = 276
 The playback is resumed after filling buffers.
 
static final int INFO_BUFFERING_START = 275
 Temporarily pausing playback internally in order to buffer more data.
 
static final int INFO_DURATION_CHANGED = 272
 Media duration changed (extra=duration)
 
static final int INFO_SEEK_COMPLETED = 271
 A seek operation has completed.
 
static final int INFO_SEEK_STARTED = 274
 A seek operation has begun.
 
static final int INFO_SEEKABLE_CHANGED = 273
 Seekable state change (0=false / 1=true)
 
static final int POSITION_UNKNOWN = 0
 Unknown position.
 
static final int STATE_COMPLETED = 200
 The end of the media source has been reached (on-demand only)
 
static final int STATE_CONNECTING = 201
 The player is connecting to the server or buffering.
 
static final int STATE_ERROR = 202
 An error has occurred.
 
static final int STATE_PAUSED = 206
 The playback is paused (on-demand only)
 
static final int STATE_PLAYING = 203
 The playback is started.
 
static final int STATE_RELEASED = 204
 The resources have been released and this player instance can no longer be used.
 
static final int STATE_STOPPED = 205
 The playback is stopped.
 
static final float VOLUME_DUCK = 0.2f
 Ducked volume.
 
static final float VOLUME_MUTE = 0.0f
 Muted volume.
 
static final float VOLUME_NORMAL = 1.0f
 Normal volume.
 

Detailed Description

Side-Band Metadata player.

Note
For special cases only. Most clients will never have to use this class.

This player connects to a Triton server and downloads the cue points linked to an audio stream session. SBM needs to be enabled on the server side.

Session ID (sbmid)
The same session ID (sbmid) must be provided to the audio URL and SBM URL parameters. Use SbmPlayer.generateSbmId() to create it. The current SbmPlayer implementation doesn't support updating the ID; therefore, you must create a new instance on each play request.
Example
public class SbmPlayerActivity extends Activity implements
MediaPlayer.OnErrorListener, MediaPlayer.OnPreparedListener,
{
private static final String SBM_URL = "http://1651.live.preprod01.streamtheworld.net:80/HLS_TEST_SBM";
private static final String STREAM_URL = "http://1651.live.preprod01.streamtheworld.net:80/HLS_TEST_SC";
private MediaPlayer mMediaPlayer;
private SbmPlayer mSbmPlayer;
private boolean mPlayRequested;
private StreamUrlBuilder mStreamUrlBuilder;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setVolumeControlStream(AudioManager.STREAM_MUSIC);
setContentView(layout);
// Create the Android player
mMediaPlayer = new MediaPlayer();
mMediaPlayer.setAudioStreamType(AudioManager.STREAM_MUSIC);
mMediaPlayer.setOnErrorListener(this);
mMediaPlayer.setOnPreparedListener(this);
// Add your tracking parameters here.
mStreamUrlBuilder = new StreamUrlBuilder(this)
.setHost(STREAM_URL);
}
@Override
protected void onDestroy() {
mMediaPlayer.release();
releaseSbmPlayer();
super.onDestroy();
}
@Override
public boolean onError(MediaPlayer androidPlayer, int what, int extra) {
releaseSbmPlayer();
return false;
}
@Override
public void onPrepared(MediaPlayer androidPlayer) {
if (!isFinishing()) {
androidPlayer.start();
if (mSbmPlayer != null) {
mSbmPlayer.play();
}
}
}
@Override
public void onCuePointReceived(MediaPlayer sbmPlayer, Bundle cuePoint) {
// Do something here
}
public void startPlayback() {
if (!mPlayRequested) {
mPlayRequested = true;
try {
// Create SBM and player URLS. We calling "mStreamUrlBuilder.build()"
// every time to refresh the location and the advertising ID.
String sbmid = SbmPlayer.generateSbmId();
String streamUrl = mStreamUrlBuilder.build() + "&sbmid=" + sbmid;
String sbmUrl = SBM_URL + "?sbmid=" + sbmid;
// Create SBM player
Bundle sbmPlayerSettings = new Bundle();
sbmPlayerSettings.putString(SbmPlayer.SETTINGS_STREAM_URL, sbmUrl);
mSbmPlayer = new SbmPlayer(this, sbmPlayerSettings);
// Create Android Player
mMediaPlayer.setDataSource(this, Uri.parse(streamUrl));
mMediaPlayer.prepareAsync();
} catch (Exception e) {
e.printStackTrace();
}
}
}
public void stopPlayback() {
// Ignore double stop requests.
if (!mPlayRequested) {
return;
}
mPlayRequested = false;
mMediaPlayer.reset();
releaseSbmPlayer();
}
private void releaseSbmPlayer() {
mCuePointIdx = 0;
mPlayRequested = false;
if (mSbmPlayer != null) {
mSbmPlayer.release();
mSbmPlayer = null;
}
}
}
Base class for a media player.
Definition: MediaPlayer.java:21
final void release()
Releases the player resources.
Definition: MediaPlayer.java:648
MediaPlayer(Context context, Bundle settings)
Constructor.
Definition: MediaPlayer.java:265
void setOnCuePointReceivedListener(OnCuePointReceivedListener listener)
Sets the cue point event listener.
Definition: MediaPlayer.java:373
Side-Band Metadata player.
Definition: SbmPlayer.java:150
SbmPlayer(Context context, Bundle settings)
Constructor.
Definition: SbmPlayer.java:166
Helps create station stream URLs.
Definition: StreamUrlBuilder.java:25
StreamUrlBuilder enableLocationTracking(boolean enable)
Enables the location tracking using the device's location manager.
Definition: StreamUrlBuilder.java:396
StreamUrlBuilder setHost(String host)
Sets server host with the mount.
Definition: StreamUrlBuilder.java:483
String build()
Returns an URL from the previously set data.
Definition: StreamUrlBuilder.java:414
Callback for receiving CuePoint.
Definition: MediaPlayer.java:30

Member Function Documentation

◆ generateSbmId()

static String com.tritondigital.player.SbmPlayer.generateSbmId ( )
static

Generates a Side-Band Metadata session ID.

The same session ID (sbmid) must be provided to the audio URL and SBM URL parameters.