我有一个网址:"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在线播放时会出错?
有人可以帮助我吗?
谢谢大家!
答案 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的第三方应用。与打开图像时相似,并显示一个对话框,让您选择要用于打开图像的应用程序。