音乐播放时进度条和时间

原创 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多媒体开发 音乐播放(加带进度条、时间显示)以及使用SoundPool播放音效

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

通过MediaPlayer实现简单的音乐播放(进度条实现快进的功能)

通过MediaPlayer实现音乐播放有三种方式:项目中raw、手机内存、网络。以下是我通过这三种方式实现音乐播放的demo,不足的地方,希望大家提出来,交流交流首先是我们在读取手机上的音源时需要一些...

Android音乐播放器设置播放进度条

音乐播放是MediaPlayer这个类控制的,进度条SeekBar可以用来显示播放进度,用户也可以利用SeekBar的滑块来控制音乐的播放。两个按钮一个用来播放歌曲启动线程,另一个取消线程和停止播放歌...

android 播放音乐-进度条

android播放音乐调节进度

实现本地音乐选择,播放,带可拖动进度条

Android实现扫描本地sdcard上的所有音乐.并且可以进行播放,带可拖动进度条。

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

仿网易云音乐的播放进度条,有三种状态:播放、暂停和拖动,只是实现了动画和主要的交互逻辑,其他细节(如暂停音乐的播放等)还需要自己完善:DKPlayerBar 是继承于UIControl的,如果想获取播...

android 音乐播放 圆形进度条

上次 上传gif后 没动 不知道这次会不会动 在依次吐槽 csdn的博客模板  上次写了一个音乐播放器 今天吧里面的一个效果写出来 写博客的习惯要慢慢养成 虽然平时上班忙 但是这不是借口 ...

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

音乐播放是MediaPlayer这个类控制的,进度条SeekBar可以用来显示播放进度,用户也可以利用SeekBar的滑块来控制音乐的播放。两个按钮一个用来播放歌曲启动线程,另一个取消线程和停止播放歌...

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

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

进度条跟随音乐播放滑动

  • 2016-01-22 00:02
  • 1.38MB
  • 下载
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:深度学习:神经网络中的前向传播和反向传播算法推导
举报原因:
原因补充:

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