音乐播放时进度条和时间

原创 2017年10月13日 08:41:06

音乐播放类,同时控制进度条拖拽更改音乐进度以及获得音乐总时间和当前时间

public class MainActivity extends Activity {



    protected static final String TAG = "MainActivity-->";
private MediaPlayer mediaPlayer;
private SeekBar seekBar;
private Timer timer;
private int duration;
private Handler handler = new Handler(){

public void handleMessage(android.os.Message msg) {


int progress = (Integer) msg.obj;
//设置进度
seekBar.setProgress(progress);


tvTime.setText("当前时间 : "+TimerFormatter.
formatterTime(mediaPlayer.getCurrentPosition())+"\n总时长 : "+
TimerFormatter.formatterTime(mediaPlayer.getDuration()));


};


};
private TextView tvTime;






@Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        
        timer = new Timer();
        
        seekBar = (SeekBar) findViewById(R.id.seekBar);
        tvTime = (TextView) findViewById(R.id.tvTime);
        //设置seekbar进度改变的一个监听
        seekBar.setOnSeekBarChangeListener(new OnSeekBarChangeListener() {

@Override
public void onStopTrackingTouch(SeekBar seekBar) {
//手指停止拖拽时会执行该方法

Log.d(TAG, "onStopTrackingTouch");

}

@Override
public void onStartTrackingTouch(SeekBar seekBar) {
//手指开始拖拽时会执行的方法
Log.d(TAG, "onStartTrackingTouch");
}

@Override
public void onProgressChanged(SeekBar seekBar, int progress,
boolean fromUser) {

//参数 : fromUser 是用来标识是否来自用户的手动操作  true 用户动过手动方式更改的进度条
//false 反之亦然
//进度条更改时会执行的方法
Log.d(TAG, "onProgressChanged");

if(fromUser){
int currentPositon = (progress * duration) / 100;
//跳转到你所指定的位置进行播放
mediaPlayer.seekTo(currentPositon);
}


}
});
    }
    
    
    /**
     * 播放
     * @param v
     */
    public void btnPlay(View v){
   
   
    try {
mediaPlayer = new MediaPlayer();
//设置播放的流媒体类型  mp3     mp4 视频
mediaPlayer.setAudioStreamType(AudioManager.STREAM_MUSIC);
//设置播放音乐文件的路劲
mediaPlayer.setDataSource("/sdcard/herofordawn.mp3");
//准备  就是执行音乐播放相关初始化工作
mediaPlayer.prepare();
mediaPlayer.start();
duration = mediaPlayer.getDuration();

timer.scheduleAtFixedRate(new TimerTask() {

@Override
public void run() {

//每次都要去获取当前音乐的播放位置
int currentP = mediaPlayer.getCurrentPosition();

int progress = (currentP * 100)/ duration ; // 100 / 1000  //0.1% * 100

//发送消息

Message msg = handler.obtainMessage();
msg.obj = progress;
msg.what = 1;
handler.sendMessage(msg);

//System.out.println("当前时间  : "+currentP+"  总时长 : "+duration+"  计算后的值  : "+progress);

}
}, 0, 1000);


} catch (Exception e) {
e.printStackTrace();
}  
    }
    
    /**
     * 暂停
     * @param v
     */
    public void btnPause(View v){
//     /isPlaying 判断音乐是否正在播放
    if(mediaPlayer != null && mediaPlayer.isPlaying()){
    //记住播放的位置
    mediaPlayer.pause();
    }else{
    //跳转到播放的位置
    mediaPlayer.start();
    }
   
    }
    
    
    /**
     * 停止
     * @param v
     */
    public void btnStop(View v){
   
    if(mediaPlayer != null && mediaPlayer.isPlaying()){
   
    mediaPlayer.stop();
    mediaPlayer.release();//释放媒体资源
    mediaPlayer = null;
   
    }
   
    } 

}



时间转换类,将得到的音乐时间毫秒转换为时分秒格式

public class TimerFormatter {


    public static String formatterTime(int currentPosition) {
        SimpleDateFormat sdateformat=new SimpleDateFormat("mm:ss");
        String format = sdateformat.format(new Date(currentPosition + 0));

      return format;
    }
}


android实现音乐播放器(进度条)

|--依赖3个对象 MediaPlayer:实现音乐播放,暂停,缓冲。 SeekBar:滑动的进度条。 java.util.Timer:定时器,时时更新进度条。 |--补充 ...

MediaPlayer 音乐播放器进度条

使用MediaPlayer播放音乐时添加进度条

Android之MediaPlayer播放音乐并实现进度条实例

首先,说明我们是从sd卡里读文件,来播放文件!! 1、效果图: 提前工作,往sd卡里放音乐文件,如图: 2、布局文件main.xml ...

android实现音乐播放器(进度条)

|--效果图 |--依赖3个对象     MediaPlayer:实现音乐播放,暂停,缓冲。     SeekBar:滑动的进度条。     java.util.Timer:定时器,时时更...
  • bfboys
  • bfboys
  • 2016年11月14日 09:58
  • 4669

Android——音乐播放器完善——进度条显示当前播放进度,加可拖动进度条 绑定方式通信

效果: 问题:可拖动进度条随进度条移动时,会致使音乐卡顿(待解决) xml xml version="1.0" encoding="utf-8"?> LinearLayout xml...
  • bfboys
  • bfboys
  • 2016年09月18日 21:19
  • 2026

Android多媒体开发 音乐播放(加带进度条、时间显示)以及使用SoundPool播放音效

Android多媒体开发 音乐播放以及使用SoundPool播放音效 Android多媒体开发 音乐播放以及使用SoundPool播放音效...

Android多媒体开发 音乐播放(加带进度条、时间显示)以及使用SoundPool播放音效

资讯 | 安全 | 论坛 | 下载 | 读书 | 程序开发 | 数据库 | 系统 | 网络 | 电子书 | 站长学院 | 源码 | QQ | 专栏 | 考试 | 手册 |  软件开发|web...
  • jhydn
  • jhydn
  • 2014年06月27日 10:41
  • 617

进度条跟随音乐播放滑动

  • 2016年01月22日 00:02
  • 1.38MB
  • 下载

仿网易云音乐的播放进度条

  • 2015年05月02日 15:46
  • 57KB
  • 下载

Android音乐播放器的播放进度条(转)

音乐播放是MediaPlayer这个类控制的,进度条SeekBar可以用来显示播放进度,用户也可以利用SeekBar的滑块来控制音乐的播放。两个按钮一个用来播放歌曲启动线程,另一个取消线程和停止播放歌...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:音乐播放时进度条和时间
举报原因:
原因补充:

(最多只允许输入30个字)