【问题标题】:Stream mp3 from link从链接流式传输 mp3
【发布时间】:2014-04-22 04:38:28
【问题描述】:
我正在尝试构建一个可以从网络传输 mp3 内容的应用程序。当我运行此代码时,我没有收到任何错误,但没有播放音频。有什么帮助吗?谢谢
private MediaPlayer mediaPlayer;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
initView();
try {
mediaPlayer.setDataSource("my link.mp3"); //
mediaPlayer.prepareAsync();
//mediaPlayer.prepare(); //
if(! mediaPlayer.isPlaying())
{
mediaPlayer.start();
}
} catch (Exception e) {
e.printStackTrace();
}
}
private void initView() {
mediaPlayer = new MediaPlayer();
}
}
【问题讨论】:
标签:
android
mp3
android-mediaplayer
【解决方案1】:
private MediaPlayer mediaPlayer;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
initView();
try {
mediaPlayer.setDataSource("my link.mp3"); //
// mediaPlayer.prepareAsync();
mediaPlayer.prepare();
// 如果你想要异步操作,这个方法会阻塞 UI 然后使用 mediaPlayer.prepareAsync();
mediaPlayer.start();
} catch (Exception e) {
e.printStackTrace();
}
}
【解决方案2】:
试试这个:
ProgressDialog progressDialog = ProgressDialog
.show(this, "Loading ", "Please Wait...");
progressDialog.setCancelable(false);
MediaPlayer player = new MediaPlayer();
player.setAudioStreamType(AudioManager.STREAM_MUSIC);
try {
player.setDataSource("http://my link.mp3");
player.setOnErrorListener(this);
player.setOnPreparedListener(this);
player.prepareAsync();
} catch (IllegalArgumentException e) {
Toast.makeText(YourActivity.this,
"Internet Access is not Provided", 0).show();
e.printStackTrace();
} catch (IllegalStateException e) {
Toast.makeText(YourActivity.this,
"Internet Access is not Provided", 0).show();
e.printStackTrace();
} catch (IOException e) {
Toast.makeText(YourActivity.this,
"Internet Access is not Provided", 0).show();
e.printStackTrace();
}
@Override
public void onPrepared(MediaPlayer play) {
if (progressDialog != null && progressDialog.isShowing()) {
progressDialog.dismiss();
}
play.start();
}
@Override
public boolean onError(MediaPlayer arg0, int arg1, int arg2) {
if (progressDialog != null && progressDialog.isShowing()) {
progressDialog.dismiss();
}
if (player != null) {
player.release();
player = null;
}
return false;
}