我正在使用listview并在屏幕底部使用媒体控制器,当我点击任何一个列表项时,第一次我能够播放那首歌,但之后当我点击时另一个列表项,它没有播放那些音乐(我的意思是不停止存在而不是开始新音乐)
listview.setOnItemClickListener(new OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> arg0, View arg1, int position,
long id) {
// TODO Auto-generated method stub
Toast.makeText(getApplicationContext(), actorsList.get(position).getUrl(), Toast.LENGTH_LONG).show();
strTitle = actorsList.get(position).getTitle().toString();
textAudioTitle.setText(strTitle);
strURL = actorsList.get(position).getUrl().toString();
}
});
public void play(){
mediaPlayer.setAudioStreamType(AudioManager.STREAM_MUSIC);
try {
mediaPlayer.setDataSource(strURL);
} catch (IllegalArgumentException e) {
} catch (SecurityException e) {
} catch (IllegalStateException e) {
} catch (IOException e) {
e.printStackTrace();
}
try {
mediaPlayer.prepare();
} catch (IllegalStateException e) {
} catch (IOException e) {
}
mediaPlayer.start();
finalTime = mediaPlayer.getDuration();
startTime = mediaPlayer.getCurrentPosition();
if(oneTimeOnly == 0){
seekbar.setMax((int) finalTime);
oneTimeOnly = 1;
}
endTimeField.setText(String.format("%d : %d",
TimeUnit.MILLISECONDS.toMinutes((long) finalTime),
TimeUnit.MILLISECONDS.toSeconds((long) finalTime) -
TimeUnit.MINUTES.toSeconds(TimeUnit.MILLISECONDS.
toMinutes((long) finalTime)))
);
startTimeField.setText(String.format("%d : %d",
TimeUnit.MILLISECONDS.toMinutes((long) startTime),
TimeUnit.MILLISECONDS.toSeconds((long) startTime) -
TimeUnit.MINUTES.toSeconds(TimeUnit.MILLISECONDS.
toMinutes((long) startTime)))
);
seekbar.setProgress((int)startTime);
myHandler.postDelayed(UpdateSongTime,100);
btnPlay.setVisibility(View.GONE);
btnPause.setVisibility(View.VISIBLE);
}
private Runnable UpdateSongTime = new Runnable() {
public void run() {
startTime = mediaPlayer.getCurrentPosition();
startTimeField.setText(String.format("%d : %d",
TimeUnit.MILLISECONDS.toMinutes((long) startTime),
TimeUnit.MILLISECONDS.toSeconds((long) startTime) -
TimeUnit.MINUTES.toSeconds(TimeUnit.MILLISECONDS.
toMinutes((long) startTime)))
);
seekbar.setProgress((int)startTime);
myHandler.postDelayed(this, 100);
}
};
public void pause(){
mediaPlayer.pause();
btnPlay.setVisibility(View.VISIBLE);
btnPause.setVisibility(View.GONE);
}
答案 0 :(得分:1)
如果媒体在ItemClick
@Override
public void onItemClick(AdapterView<?> arg0, View arg1, int position,
long id) {
// TODO Auto-generated method stub
Toast.makeText(getApplicationContext(), actorsList.get(position).getUrl(), Toast.LENGTH_LONG).show();
strTitle = actorsList.get(position).getTitle().toString();
textAudioTitle.setText(strTitle);
strURL = actorsList.get(position).getUrl().toString();
if(mediaPlayer!=null && mediaPlayer.isPlaying())
{
mediaPlayer.stop();
}
}
答案 1 :(得分:0)
这是因为你永远不会为正在播放的当前歌曲调用mediaPlayer.stop()。