安卓Android开发Android知识

音乐播放器

2016-09-29  本文已影响462人  大话程序

在Android中播放音频文件一般都是使用MediaPlayer类来实现的

MediaPlayer使用步骤简介:

制作简易音乐播放器

播放音乐需要在服务中进行,当音乐播放器界面不显示的时候,音乐依旧可以播放

1、在服务中,有开始播放、暂停播放、滑动进度条在指定位置播放音乐等方法的定义
2、在服务中,定义一个计时器,根据音乐播放的进度,在进度条SeekBar中显示出来
3、在活动中,添加进度条SeekBar监听器

// mediaPlayer.setDataSource("http://192.168.1.101:8080/richu.mp3");
//异步准备
mediaPlayer.prepareAsync();

            mediaPlayer.setOnPreparedListener(new OnPreparedListener() {
                //准备完毕时,此方法调用
                @Override
                public void onPrepared(MediaPlayer mp) {
                    //开始播放
                    mediaPlayer.start();
                    //计时器开始计时
                    addTimer();
                }
            });
        } catch (Exception e) {
            e.printStackTrace();
        }
}

/*继续播放音乐的方法*/
public void continuePlay(){
    mediaPlayer.start();
}

/*暂停播放音乐*/
public void pause(){
    mediaPlayer.pause();
}

/*添加一个计时器对象*/
public void addTimer(){
    if (timer == null) {
        timer = new Timer();
        //计时器设置,相当于开启了一个子线程
        timer.schedule(new TimerTask() {
            @Override
            public void run() {
                //获取歌曲总时长
                int duration = mediaPlayer.getDuration();
                //获取歌曲当前播放进度
                int currentPosition = mediaPlayer.getCurrentPosition();
                /*发送消息对象,在主线程中更新UI*/
                Message message = MainActivity.handler.obtainMessage();
                Bundle bundle = new Bundle();
                bundle.putInt("duration", duration);
                bundle.putInt("currentPosition", currentPosition);
                message.setData(bundle);
                MainActivity.handler.sendMessage(message);
            }
        }, 5, 500);//开始计时任务后的5毫秒,第一次执行run方法;以后每500毫秒执行一次
    }
}

/*指定位置播放音乐*/
public void seekTo(int progress){
    mediaPlayer.seekTo(progress);
}

/*服务和绑定此服务的活动通信的中间对象*/
class MusicControl extends Binder implements MusicInterface{

    @Override
    public void play() {
        MusicService.this.play();
    }

    @Override
    public void continuePlay() {
        MusicService.this.continuePlay();
    }

    @Override
    public void pause() {
        MusicService.this.pause();
    }

    @Override
    public void seekTo(int progress) {
        MusicService.this.seekTo(progress);
    }
    
}

}
```

上一篇 下一篇

猜你喜欢

热点阅读