我已经搜索了另一个在我的android项目中使用的MP3播放器,但我找不到。 MediaPlayer 不好!
我正在尝试播放一首歌,所以当我点击它播放的歌曲时,如果我再次点击它应该停止,MediaPlayer工作不正常,我试图制作一首歌 的 ProgressDialog
它也没有用。
viewHolder.mView.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
String name = model.getTitle();
Toast.makeText(MainActivity.this, "you clicked on -> " + name , Toast.LENGTH_SHORT).show();
String url = model.getMusic();
MediaPlayer mp = MediaPlayer.create(getApplicationContext() , Uri.parse(url));
mp.setOnPreparedListener(new MediaPlayer.OnPreparedListener() {
@Override
public void onPrepared(MediaPlayer mp) {
if (progressDialog != null && progressDialog.isShowing()){
progressDialog.dismiss();
}
mp.start();
}
});
if(mp.isPlaying()){
mp.stop();
}else {
mp.start();
}
}
});
答案 0 :(得分:0)
您正在调用静态create()
方法。媒体将在该方法返回之前准备好。您的OnPreparedListener
监听器永远不会在现有代码中调用。
简单的解决方案是摆脱OnPreparedListener
并在dismiss()
之后调用create()
。最有可能的是,你会发现你的ProgressDialog
没有太大帮助。
可替换地:
create()
new MediaPlayer()
OnPreparedListener
setDataSource()
上的MediaPlayer
,因为这将执行一些磁盘I / O,而您不希望在主应用程序线程上执行此操作您可能需要安排在主应用程序线程上调用dismiss()
- 我没有尝试dismiss()
来自后台线程的对话框,我不知道是否支持。< / p>