[英]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.