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

	拖动进度条快进
	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);

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值