Monday, March 5, 2012

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

In last exercise, we can "Retrieve playable Uri from MediaStore". In this exercise, we change target media source from MediaStore.Audio.Media.EXTERNAL_CONTENT_URI to MediaStore.Video.Media.EXTERNAL_CONTENT_URI, to retrieve media of video. We can play it using build-in media play app by starting activity with intent of Intent.ACTION_VIEW, with the retrieved playable Uri.


package com.exercise.AndroidListMedia;

import android.app.ListActivity;
import android.content.Intent;
import android.database.Cursor;
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;
 
 final Uri mediaSrc = MediaStore.Video.Media.EXTERNAL_CONTENT_URI;
 
    /** 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(
          mediaSrc, 
          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));

  Uri playableUri
   = Uri.withAppendedPath(mediaSrc, _id);
  
  Toast.makeText(this, "Play: " + playableUri.toString(), Toast.LENGTH_LONG).show();

  Intent intent = new Intent();
  intent.setAction(Intent.ACTION_VIEW);
  intent.setData(playableUri);
  startActivity(intent);
 }
    
    
}


Download the files.


Next:
- Play media on surfaceview using android.media.MediaPlayer


Remark:
Please notice that both managedQuery(Uri uri, String[] projection, String selection, String[] selectionArgs, String sortOrder) and SimpleCursorAdapter(Context context, int layout, Cursor c, String[] from, int[] to) are deprecated. See how to use CursorLoader here.

No comments: