android mp3进度条和时间,AndroidStudio音乐播放器进度条和歌曲时间的操作

1、首先,我们需要使用在activity_main布局中定义好一个SeekBar和两个ListView,SeekBar表示进度条,两个ListView分别用来表示当前的时间和歌曲的总时间。

2、在MusicActivity中定义三个对象,在之前的play方法中绑定id:

private SeekBar seekBar;

private TextView currentTV;

private TextView totalTV;

//绑定id;

seekBar = findViewById(R.id.music_seekbar);

totalTV = findViewById(R.id.music_total_time);

currentTV = findViewById(R.id.music_current_time);

3、使用formatTime方法对时间格式化:

private String formatTime(int length){

Date date = new Date(length);

//时间格式化工具

SimpleDateFormat sdf = new SimpleDateFormat(“mm:ss”);

String totalTime = sdf.format(date);

return totalTime;

}

4、对seekBar设置监听,方便用户在拖动进度条时能到达相应的位置,歌曲能够连贯:

seekBar.setOnSeekBarChangeListener(new SeekBar.OnSeekBarChangeListener() {

@Override

public void onProgressChanged(SeekBar seekBar, int i, boolean b) {

if(b){

mediaPlayer.seekTo(i);

}

}

( i 指当前所在的位置)

5、使用多线程方法实现多线程的实现进度条的滚动条的进程:

子线程:

注意:安卓机制规定不能在子线程中进行更新UI,所以我们必须使用setEmptyMessage方法,向主线程发送消息

class MusicThread implements Runnable{

@Override

public void run() {

while (!isStop&&mediaPlayer!=null){

//给主线程发消息,更新UI

handler.sendEmptyMessage(mediaPlayer.getCurrentPosition());//获取当前的点击位置;

try{

Thread.sleep(100);

} catch (InterruptedException e) {

e.printStackTrace();

}

}}

}

主线程:

private Handler handler = new Handler(){

@Override

public void handleMessage(Message msg) {

super.handleMessage(msg);

注意:在主线程中使用handleMessage接收子线程发送的消息

//更新Seekbar

seekBar.setProgress(msg.what);

//更新TextView

currentTV.setText(formatTime(msg.what));

}

};

6、因为我们在操作的时候按下暂停,进度条和当前时间会不动,所以我们要定义boolean类型的isStop = false,在下面的位置使用:

@Override

protected void onDestroy() {

super.onDestroy();

mediaPlayer.reset();

isStop = true;

}

@Override

public void run() {

while (!isStop&&mediaPlayer!=null){

//给主线程发消息,更新UI

handler.sendEmptyMessage(mediaPlayer.getCurrentPosition());

try{

Thread.sleep(100);

} catch (InterruptedException e) {

e.printStackTrace();

}

  • 0
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
以下是一个简单的 Android Studio 音乐播放器进度条代码示例: 在 layout 文件中,添加一个 SeekBar 元素用于显示进度条: ``` <SeekBar android:id="@+id/seek_bar" android:layout_width="match_parent" android:layout_height="wrap_content" android:max="100" android:progress="0" android:thumb="@drawable/ic_slider" /> ``` 在 Java 代码中,获取 SeekBar 对象并为其设置 OnSeekBarChangeListener 监听器,以便在播放时更新进度条: ``` SeekBar seekBar = findViewById(R.id.seek_bar); seekBar.setOnSeekBarChangeListener(new SeekBar.OnSeekBarChangeListener() { @Override public void onProgressChanged(SeekBar seekBar, int progress, boolean fromUser) { // 进度条值改变时调用 } @Override public void onStartTrackingTouch(SeekBar seekBar) { // 用户开始拖动进度条时调用 } @Override public void onStopTrackingTouch(SeekBar seekBar) { // 用户停止拖动进度条时调用 } }); ``` 在播放器的播放方法中,使用一个 Timer 对象定时更新进度条的值,并设置 SeekBar 对象的进度: ``` Timer timer = new Timer(); timer.schedule(new TimerTask() { @Override public void run() { int currentPosition = mediaPlayer.getCurrentPosition(); int totalDuration = mediaPlayer.getDuration(); int progress = (int)(((double)currentPosition / totalDuration) * 100); seekBar.setProgress(progress); } }, 0, 1000); ``` 注意,这里的定时器每隔 1 秒钟更新一次进度条的值,可以根据实际需要调整时间间隔。此外,mediaPlayer 表示播放器对象,可以根据实际情况进行调整。 以上是一个简单的 Android Studio 音乐播放器进度条代码示例,仅供参考。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值