您的位置:首页 > 其它

音乐播放,快进,自动播放下一曲

2017-07-24 14:12 891 查看
拖动进度条快进

seekbar.setOnSeekBarChangeListener(new OnSeekBarChangeListener() {

@Override
public void onStopTrackingTouch(SeekBar seekBar) {

}

@Override
public void onStartTrackingTouch(SeekBar seekBar) {

}

@Override
public void onProgressChanged(SeekBar seekBar, int progress,
boolean fromUser) {
if (fromUser) {
int duration = media.getDuration();
int jindu = duration * progress / 100;
media.seekTo(jindu);
}
}
});

播放音乐
private void Play(int position) {
// 重置
media.reset();
try {
// 防止音乐点击下一曲的时候还是播放当前音乐,
AssetFileDescriptor open = getAssets().openFd(list.get(position));
FileDescriptor file = open.getFileDescriptor();
media.setDataSource(file, open.getStartOffset(), open.getLength());
//或者按照这个路径播放,上面三行就可以不用写
media.setDataSource(list.get(index).getPath());
// 准备 media.prepare(); } catch (Exception e) { e.printStackTrace(); } // 开始播放 media.start();}
设置进度条随着音乐播放改变
// 主线程控制进度条
Handler handler = new Handler() {
public void handleMessage(Message msg) {
if (msg.what == 100) {
// 得到当前进度
int m = (Integer) msg.obj;
// 设置进度
seekbar.setProgress(m);
// 总进度到了99的时候让他停止播放,因为进度是从0开始,所以到99停止
if (m == 99) {
if (media != null && media.isPlaying()) {
media.stop();
}

// 播放完成让进度条归0
seekbar.setProgress(0);
Toast.makeText(MusicActivity.this, "音乐播放完成",
Toast.LENGTH_SHORT).show();
}
}
};
};
子线程发送进度,让handler控制,子线程不能更新ui
private void SeekBarChange() {
// 得到音乐的总进度
count = media.getDuration();
new Timer().schedule(new TimerTask() {
@Override
public void run() {
// 得到当前音乐总进度
int now = media.getCurrentPosition();
// 得到过当前进度
int jindu = now * 100 / count;
// 发送
Message msg = Message.obtain();
msg.what = 100;
msg.obj = jindu;
handler.sendMessage(msg);
}

4000
}, 0, 100);

}


                                            
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: