AudioModelpublic class AudioModel extends MediaModel
Fields Summary |
---|
private static final String | TAG | private static final boolean | DEBUG | private static final boolean | LOCAL_LOGV | private final HashMap | mExtras |
Constructors Summary |
---|
public AudioModel(android.content.Context context, android.net.Uri uri)
this(context, null, null, uri);
initModelFromUri(uri);
checkContentRestriction();
| public AudioModel(android.content.Context context, String contentType, String src, android.net.Uri uri)
super(context, SmilHelper.ELEMENT_TAG_AUDIO, contentType, src, uri);
mExtras = new HashMap<String, String>();
| public AudioModel(android.content.Context context, String contentType, String src, com.android.mms.drm.DrmWrapper wrapper)
super(context, SmilHelper.ELEMENT_TAG_AUDIO, contentType, src, wrapper);
mExtras = new HashMap<String, String>();
|
Methods Summary |
---|
protected void | checkContentRestriction()
ContentRestriction cr = ContentRestrictionFactory.getContentRestriction();
cr.checkAudioContentType(mContentType);
| public java.util.Map | getExtras()
return mExtras;
| public void | handleEvent(org.w3c.dom.events.Event evt)
String evtType = evt.getType();
if (LOCAL_LOGV) {
Log.v(TAG, "Handling event: " + evtType + " on " + this);
}
MediaAction action = MediaAction.NO_ACTIVE_ACTION;
if (evtType.equals(SmilMediaElementImpl.SMIL_MEDIA_START_EVENT)) {
action = MediaAction.START;
} else if (evtType.equals(SmilMediaElementImpl.SMIL_MEDIA_END_EVENT)) {
action = MediaAction.STOP;
} else if (evtType.equals(SmilMediaElementImpl.SMIL_MEDIA_PAUSE_EVENT)) {
action = MediaAction.PAUSE;
} else if (evtType.equals(SmilMediaElementImpl.SMIL_MEDIA_SEEK_EVENT)) {
action = MediaAction.SEEK;
mSeekTo = evt.getSeekTo();
}
appendAction(action);
notifyModelChanged(false);
| private void | initModelFromUri(android.net.Uri uri)
ContentResolver cr = mContext.getContentResolver();
Cursor c = SqliteWrapper.query(mContext, cr, uri, null, null, null, null);
if (c != null) {
try {
if (c.moveToFirst()) {
String path;
boolean isFromMms = isMmsUri(uri);
// FIXME We suppose that there should be only two sources
// of the audio, one is the media store, the other is
// our MMS database.
if (isFromMms) {
path = c.getString(c.getColumnIndexOrThrow(Part._DATA));
mContentType = c.getString(c.getColumnIndexOrThrow(Part.CONTENT_TYPE));
} else {
path = c.getString(c.getColumnIndexOrThrow(Audio.Media.DATA));
mContentType = c.getString(c.getColumnIndexOrThrow(
Audio.Media.MIME_TYPE));
// Get more extras information which would be useful
// to the user.
String album = c.getString(c.getColumnIndexOrThrow("album"));
if (!TextUtils.isEmpty(album)) {
mExtras.put("album", album);
}
String artist = c.getString(c.getColumnIndexOrThrow("artist"));
if (!TextUtils.isEmpty(artist)) {
mExtras.put("artist", artist);
}
}
mSrc = path.substring(path.lastIndexOf('/") + 1);
if (TextUtils.isEmpty(mContentType)) {
throw new MmsException("Type of media is unknown.");
}
if (LOCAL_LOGV) {
Log.v(TAG, "New AudioModel created:"
+ " mSrc=" + mSrc
+ " mContentType=" + mContentType
+ " mUri=" + uri
+ " mExtras=" + mExtras);
}
} else {
throw new MmsException("Nothing found: " + uri);
}
} finally {
c.close();
}
} else {
throw new MmsException("Bad URI: " + uri);
}
initMediaDuration();
| protected boolean | isPlayable()
return true;
| public void | stop()
appendAction(MediaAction.STOP);
notifyModelChanged(false);
|
|