【发布时间】:2014-07-09 06:41:34
【问题描述】:
我有一个音乐播放器应用程序,它会剪切应该播放曲目的哪个部分。 我的问题是即使当前的媒体播放器曲目还没有到达歌曲的结尾,我如何播放下一首歌曲。我也尝试调用 onCompletion :
mplayer.stop();
Log.v("PLAYER", "Audio track Stopped");
checkTrackStatus();
songHandler.removeCallbacks(uxUpdater);
if(fis!=null)fis=null;
if((currentTrack+1) < songs.size())
{
Log.v("Move to next track", songs.get(currentTrack+1).get("songTitle"));
//mplayer.release();
mplayer=null;
currentTrack++;
playSong(currentTrack);
}else
Toast.makeText(getApplication(), "All tracks played", Toast.LENGTH_LONG).show();
播放歌曲方法:
public void playSong(final int songIndex)
{
File toPlay = new File(songs.get(songIndex).get("songPath"));
lblTrackText.setText("Playing ["+(songIndex+1)+"/"+songs.size()+"]");
lblTrackTitle.setText(songs.get(songIndex).get("songTitle"));
//lblTrackTitle.setSelected(true);
Log.v("PLAY SONG : ", toPlay.getPath());
if(toPlay.exists())
{
//playAudio(toPlay);
try{
mplayer = new MediaPlayer(this);
//mplayer.setOnCompletionListener(this);
fis=new FileInputStream(new File(songs.get(songIndex).get("songPath"))); //ORIGINAL 'p'
mplayer.setDataSource(fis.getFD());//need to add permission in manifest to play .m4a files "ACCESS_NETWORK_STATE"
mplayer.prepare();
//final String s =p;
mplayer.setOnPreparedListener(new MediaPlayer.OnPreparedListener() {
//getTotalTrackDuration
@Override
public void onPrepared(MediaPlayer mp) {
mplayer.seekTo(Integer.parseInt(songs.get(songIndex).get("songStart")));
mplayer.start();
//lblTotal.setText(timeConverter(mplayer.getDuration()));
setTrackNo();
//Log.v("NOW PLAYING ", s);
updateProgress();
}
});
} catch (Exception e) {
Log.e("AUDIO PLAYER", "error: " + e.getMessage(), e);
}
}
else
Toast.makeText(getApplication(), songs.get(songIndex).get("songTitle")+" does not exist or is already deleted", Toast.LENGTH_LONG).show();
}
我总是收到一个错误提示
错误(1,-541478725) 0x00002ad8 (code=1) 处的致命信号 11 (SIGSEGV)
顺便说一句,我正在使用 vitamio 媒体播放器。
任何帮助都会很棒..谢谢
【问题讨论】:
标签: java android android-music-player