FileDocCategorySizeDatePackage
DataSource.javaAPI DocphoneME MR2 API (J2ME)7266Wed May 02 16:47:14 BST 2007javax.microedition.media.protocol

DataSource

public abstract class DataSource extends Object implements javax.microedition.media.Controllable
A DataSource is an abstraction for media protocol-handlers. It hides the details of how the data is read from source--whether the data is coming from a file, streaming server or proprietary delivery mechanism. It provides the methods for a Player to access the input data.

An application-defined protocol can be implemented with a custom DataSource. A Player can then be created for playing back the media from the custom DataSource using the Manager.createPlayer method.

There are a few reasons why one would choose to implement a DataSource as opposed to an InputStream for a custom protocol:

  • DataSource/SourceStream provides the random seeking API that is not supported by an InputStream. i.e., if the custom protocol requires random seeking capabilities, a custom DataSource can be used.
  • DataSource/SourceStream supports the concept of transfer size that is more suited for frame-delimited data, e.g. video.

A DataSource contains a set of SourceStreams. Each SourceStream represents one elementary data stream of the source. In the most common case, a DataSource only provides one SourceStream. A DataSource may provide multiple SourceStreams if it encapsulates multiple elementary data streams.

Each of the SourceStreams provides the methods to allow a Player to read data for processing.

DataSource manages the life-cycle of the media source by providing a simple connection protocol.

DataSource implements Controllable which provides extra controls via some type-specific Control interfaces. getControl and getControls can only be called when the DataSource is connected. An IllegalStateException will be thrown otherwise.

see
javax.microedition.media.Manager
see
javax.microedition.media.protocol.SourceStream
see
javax.microedition.media.protocol.ContentDescriptor

Fields Summary
private String
sourceLocator
Constructors Summary
public DataSource(String locator)
Construct a DataSource from a locator. This method should be overloaded by subclasses; the default implementation just keeps track of the locator.

param
locator The locator that describes the DataSource.

	sourceLocator = locator;
    
Methods Summary
public abstract voidconnect()
Open a connection to the source described by the locator and initiate communication.

exception
IOException Thrown if there are IO problems when connect is called.
exception
SecurityException Thrown if the caller does not have security permission to call connect.

public abstract voiddisconnect()
Close the connection to the source described by the locator and free resources used to maintain the connection.

If no resources are in use, disconnect is ignored. If stop hasn't already been called, calling disconnect implies a stop.

public abstract java.lang.StringgetContentType()
Get a string that describes the content-type of the media that the source is providing.

return
The name that describes the media content. Returns null if the content is unknown.
exception
IllegalStateException Thrown if the source is not connected.

public abstract javax.microedition.media.ControlgetControl(java.lang.String controlType)

public abstract javax.microedition.media.Control[]getControls()

public java.lang.StringgetLocator()
Get the locator that describes this source. Returns null if the locator hasn't been set.

return
The locator for this source.

	return sourceLocator;
    
public abstract SourceStream[]getStreams()
Get the collection of streams that this source manages. The collection of streams is entirely content dependent. The MIME type of this DataSource provides the only indication of what streams may be available on this connection.

return
The collection of streams for this source.
exception
IllegalStateException Thrown if the source is not connected.

public abstract voidstart()
Initiate data-transfer. The start method must be called before data is available for reading.

exception
IllegalStateException Thrown if the DataSource is not connected.
exception
IOException Thrown if the DataSource cannot be started due to some IO problems.
exception
SecurityException Thrown if the caller does not have security permission to call start.

public abstract voidstop()
Stop the data-transfer. If the DataSource has not been connected and started, stop is ignored.

exception
IOException Thrown if the DataSource cannot be stopped due to some IO problems.