繁体   English   中英

在线播放mp3

[英]Play mp3 online

我有一个网址: "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在线播放时有错误吗?

有人能帮我吗?

谢谢大家!

网络流量永远不能位于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权限。

您的错误日志显示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();}

使用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的第三方应用程序。 类似于打开图像时,会出现一个对话框,让您选择要用于打开图像的应用程序。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM