如何在Android的播放媒体文件 [英] How to play media file in android

查看:109
本文介绍了如何在Android的播放媒体文件的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我已经retrived歌曲present在我的手机,
但我无法播放的歌曲。请帮帮我。我用的是setOnDataSource但我无法得到它。在文档显示它使用的setDataSource()。请提出修正,使code非常完美
这里是code:
包com.example.testmedia;

I have retrived the songs present in my phone, But I am unable to play the song. Please help me. i use the setOnDataSource but i could not get it. In the documentation it show the use setDataSource().Please suggest any correction to make the code extremely perfect Here is the code: package com.example.testmedia;

import java.io.IOException;
import java.util.ArrayList;
import java.util.List;

import android.media.MediaPlayer;
import android.net.Uri;
import android.os.Bundle;
import android.provider.MediaStore;
import android.app.Activity;
import android.app.ListActivity;
import android.content.ContentResolver;
import android.content.ContentUris;
import android.database.Cursor;
import android.view.Menu;
import android.view.View;
import android.widget.AdapterView;
import android.widget.AdapterView.OnItemClickListener;
import android.widget.ArrayAdapter;
import android.widget.ListView;
import android.widget.Toast;

public class Tracks_media extends Activity implements OnItemClickListener   {




MediaPlayer mediaplayer;
String Displayname="",id="";
Cursor cursor;
List<String> musiclist=new ArrayList<String>();
ListView tracklist;
ArrayAdapter<String> itemusic;
@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_tracks_media);
    tracklist=(ListView)findViewById(R.id.TrackList);
    itemusic=new ArrayAdapter<String>(this,      
            android.R.layout.simple_list_item_1, musiclist);
    mediaplayer=new MediaPlayer();
    tracklist.setAdapter(itemusic);
    Loadmusic();
    tracklist.setOnItemClickListener(this);
}

//Retrive all songs
private void Loadmusic() {
    // TODO Auto-generated method stub
    ContentResolver cr=getContentResolver();
    Uri uri=MediaStore.Audio.Media.EXTERNAL_CONTENT_URI;
    cursor=cr.query(uri, null, null, null, null);
    if(cursor==null)
    {
        Toast.makeText(this, "No media Files present",         
             Toast.LENGTH_SHORT).show();



    }
    while (cursor.moveToNext())
    {


Displayname=cursor.getString(cursor.getColumnIndex(MediaStore.Audio.Media.TITLE));

id=cursor.getString(cursor.getColumnIndex(MediaStore.Audio.Media._ID));
        itemusic.add(id+"\t"+Displayname+"");
    }   


    cursor.close();

}



@Override
public boolean onCreateOptionsMenu(Menu menu) {
    // Inflate the menu; this adds items to the action bar if it is present.
    getMenuInflater().inflate(R.menu.tracks_media, menu);
    return true;
}



@Override
public void onItemClick(AdapterView<?> arg0, View arg1, int position, long id) {
    // TODO Auto-generated method stub
    mediaplayer.reset();
    try {
        mediaplayer.setDataSource(musiclist.get(position));
        mediaplayer.prepare();
        mediaplayer.start();
    } catch (IllegalStateException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    } catch (IOException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    }

}


}

我试过很多方法,但无法得到它的权利。
请告诉我怎么打retrived媒体。

I tried many ways but could not get it right. Please tell me how to play the retrived media.

推荐答案

最后我得到了解决。这里是code

Finally i got the solution. Here is the code

import java.util.ArrayList;
import android.media.AudioManager;
import android.media.MediaPlayer;
import android.net.Uri;
import android.os.Bundle;
import android.provider.MediaStore;
import android.app.Activity;
import android.content.Context;
import android.database.Cursor;
import android.view.Menu;
import android.view.View;
import android.widget.AdapterView;
import android.widget.AdapterView.OnItemClickListener;
import android.widget.ArrayAdapter;
import android.widget.ListView;


public class Tracks extends Activity implements OnItemClickListener {


     ListView lv;
     ArrayList<String> songs;
     ArrayAdapter<String> adapter;
     AudioManager am;
     MediaPlayer mp;
     Cursor cursor;
@Override
protected void onCreate(Bundle savedInstanceState) 
{
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_tracks);
    lv=(ListView)findViewById(R.id.Tracks);
    am=(AudioManager)getSystemService(Context.AUDIO_SERVICE);
    loadMusic();
    adapter=new ArrayAdapter<String>(this,android.R.layout.simple_list_item_1,songs);
    lv.setAdapter(adapter);
    lv.setOnItemClickListener(this);
}

    @SuppressWarnings("deprecation")
    private void loadMusic() 
    {
        Uri uri=android.provider.MediaStore.Audio.Media.EXTERNAL_CONTENT_URI;
        String projection[]=    
   {android.provider.MediaStore.Audio.Media.DATA,android.provider.MediaStore.Audio.Media.TITLE};
        cursor=this.managedQuery(uri, projection, null, null, null);
        songs=new ArrayList<String>();
        while (cursor.moveToNext()) {

            String duration=android.provider.MediaStore.Audio.Media.DURATION;
            songs.add(cursor.getString(1)+"\t"+duration);
        }

    }

    @Override
    public boolean onCreateOptionsMenu(Menu menu) {
        // Inflate the menu; this adds items to the action bar if it is present.
        getMenuInflater().inflate(R.menu.tracks, menu);
        return true;
    }

    @Override
    public void onItemClick(AdapterView<?> arg0, View arg1, int position, long id) 
    {

        cursor.moveToPosition(position);
        //Toast.makeText(getBaseContext(), songs.get(position), Toast.LENGTH_SHORT).show();
        int id1=cursor.getColumnIndex(MediaStore.Audio.Media.DATA);
        //Uri filename=ContentUris.withAppendedId(android.provider.MediaStore.Audio.Media.EXTERNAL_CONTENT_URI, id);
        mp=new MediaPlayer();
        //mp.reset();
        try
        {
            mp.setAudioStreamType(AudioManager.STREAM_MUSIC);
            mp.setDataSource(cursor.getString(id1));
            mp.prepare();
            mp.start();
        }
        catch (Exception e) {
            // TODO: handle exception
            e.printStackTrace();
        }

    }

    @Override
    protected void onDestroy() {
        // TODO Auto-generated method stub
        super.onDestroy();
        mp.release();
    }

    @Override
    protected void onPause() {
        // TODO Auto-generated method stub
        super.onPause();
    }

    @Override
    protected void onRestart() {
        // TODO Auto-generated method stub
        super.onRestart();
    }

    @Override
    protected void onResume() {
        // TODO Auto-generated method stub
        super.onResume();
    }

}

这篇关于如何在Android的播放媒体文件的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆