在线播放mp3

时间:2014-06-23 09:05:34

标签: android android-mediaplayer audio-streaming

我有一个网址:"http://my_server/song.mp3"

我的代码:

String url_song="http://my_server/song.mp3";
MediaPlayer mMediaPlayer=new MediaPlayer();
mMediaPlayer.setDataSource(url_song);
mMediaPlayer.prepare();
mMediaPlayer.start();

但它有错误(100 0),无法播放,我尝试下载此文件并在本地播放,没关系。 那么,MediaPlayer在线播放时会出错?

有人可以帮助我吗?

谢谢大家!

3 个答案:

答案 0 :(得分:1)

网络流量永远不会出现在Android的UI线程中。使用AsyncTask

new AsyncTask<Void,Void,Void>(){
    public Void doInBackground(Void... v) {
        String url_song="http://my_server/song.mp3";
        MediaPlayer mMediaPlayer=new MediaPlayer();
        mMediaPlayer.setDataSource(url_song);
        mMediaPlayer.prepare();
        mMediaPlayer.start();
    }
}.execute();

此外,请确保您的清单中具有Internet权限。

答案 1 :(得分:0)

您的错误日志显示IOException,因此请检查确切的文件是否确实存在。还有使用prepareAsync的网络流,因为它在后台准备流尝试这段代码。还要在你的类中实现OnPreparedListener,并在那里的onPrepared方法中开始播放。

String url_song="http://my_server/song.mp3";
    MediaPlayer mMediaPlayer=new MediaPlayer();
    try{
    mMediaPlayer.setDataSource(url_song);
    mMediaPlayer.prepareAsync();
    }catch(IllegalArgumentException | SecurityException
                | IllegalStateException | IOException e){
     Log.e(TAG, e.toString());
     }

    public void onPrepared(MediaPlayer mp) { mMediaPlayer.start();}

答案 2 :(得分:0)

使用Intent.ACTION_VEW

String url_song="http://my_server/song.mp3";
Intent intent = new Intent(Intent.ACTION_VIEW);                                                                          
intent.setDataAndType(Uri.parse(url_song), "audio/*");
startActivity(intent);

这将让用户选择他们想要播放远程mp3的第三方应用。与打开图像时相似,并显示一个对话框,让您选择要用于打开图像的应用程序。