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

来源:互联网 发布:什么叫网络销售 编辑:程序博客网 时间:2024/05/16 05:58
拖动进度条快进
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);        }    }, 0, 100);}

原创粉丝点击