Friday, March 2, 2012

Retrieve playable Uri from MediaStore, pointed by cursor.

Modify from last exercise "Get info of a specified item in MediaStore.Audio.Media", we can retrieve the playable Uri of selected media from MediaStore, pointed by cursor, using Uri.withAppendedPath().

Retrieve playable Uri from MediaStore, pointed by cursor.

package com.exercise.AndroidListMedia;

import android.app.ListActivity;
import android.database.Cursor;
import android.media.MediaPlayer;
import android.net.Uri;
import android.os.Bundle;
import android.provider.MediaStore;
import android.view.View;
import android.widget.ListView;
import android.widget.SimpleCursorAdapter;
import android.widget.Toast;

public class AndroidListMediaActivity extends ListActivity {

SimpleCursorAdapter adapter;
MediaPlayer myMediaPlayer;

/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
String[] from = {
MediaStore.MediaColumns.TITLE};
int[] to = {
android.R.id.text1};

Cursor cursor = managedQuery(
MediaStore.Audio.Media.EXTERNAL_CONTENT_URI,
null,
null,
null,
MediaStore.Audio.Media.TITLE);

adapter = new SimpleCursorAdapter(this,
android.R.layout.simple_list_item_1, cursor, from, to);
setListAdapter(adapter);
}

@Override
protected void onListItemClick(ListView l, View v, int position, long id) {
Cursor cursor = adapter.getCursor();
cursor.moveToPosition(position);

String _id = cursor.getString(cursor.getColumnIndex(MediaStore.Audio.Media._ID));
String title = cursor.getString(cursor.getColumnIndex(MediaStore.Audio.Media.TITLE));
String artist = cursor.getString(cursor.getColumnIndex(MediaStore.Audio.Media.ARTIST));
String album = cursor.getString(cursor.getColumnIndex(MediaStore.Audio.Media.ALBUM));
int duration = cursor.getInt(cursor.getColumnIndex(MediaStore.Audio.Media.DURATION));

Uri playableUri
= Uri.withAppendedPath(MediaStore.Audio.Media.EXTERNAL_CONTENT_URI, _id);
myMediaPlayer = MediaPlayer.create(getBaseContext(), playableUri);
String msgMediaPlayer;
if(myMediaPlayer != null){
myMediaPlayer.start();
msgMediaPlayer = "Playing: " + playableUri + "\n";
}else{
msgMediaPlayer = "Cannot play: " + playableUri + "\n";
}

String info = msgMediaPlayer + "\n"
+ "_ID: " + _id + "\n"
+ "TITLE: " + title + "\n"
+ "ARTIST: " + artist + "\n"
+ "ALBUM: " + album + "\n"
+ "DURATION: " + duration/1000 + "s";

Toast.makeText(this, info, Toast.LENGTH_LONG).show();
}

}


Download the files.

Next:
- Start activity to play MediaStore.Video.Media by intent with action of Intent.ACTION_VIEW

No comments: