android仿音乐播放器|Android仿音乐播放器功能

更新时间:2021-06-17    来源:php常用代码    手机版     字体:

【www.bbyears.com--php常用代码】

读取本地音乐文件

源代码:

 代码如下

importandroid.media.MediaPlayer;

importandroid.support.v7.app.AppCompatActivity;

importandroid.os.Bundle;

importandroid.view.View;

importandroid.widget.ImageButton;

importandroid.widget.SeekBar;

importandroid.widget.TextView;

 

publicclassMainActivityextendsAppCompatActivity {

 

  privateMediaPlayer mediaPlayer;

  privateSeekBar seekBar;

  privateTextView tv_mian_stop;

  privateTextView tv_mian_start;

  privateintmusicaction;

  @Override

  protectedvoidonCreate(Bundle savedInstanceState) {

    super.onCreate(savedInstanceState);

    setContentView(R.layout.activity_main);

    tv_mian_start = (TextView) findViewById(R.id.tv_mian_start);

    tv_mian_stop = (TextView) findViewById(R.id.tv_mian_stop);

    seekBar = (SeekBar) findViewById(R.id.seekBar);

 

 

    //进度条的监听事件

    seekBar.setOnSeekBarChangeListener(newSeekBar.OnSeekBarChangeListener() {

      @Override

      publicvoidonProgressChanged(SeekBar seekBar,intprogress,booleanfromUser) {

          //改变

         //每当进度条发生改变时tv_mian_start的值发生变化

         //new TimeUtil().secToTime()一个外部类(时间格式转化)

         tv_mian_start.setText(newTimeUtil().secToTime(mediaPlayer.getCurrentPosition()/1000)+"");

      }

      @Override

      publicvoidonStartTrackingTouch(SeekBar seekBar) {

          //开始

      }

 

      @Override

      publicvoidonStopTrackingTouch(SeekBar seekBar) {

          //结束

          //获取拖动结束之后的位置

        intprogrss=seekBar.getProgress();

        mediaPlayer.seekTo(progrss);

      }

    });

  }

 

  publicvoidisPlay(View view){

    ImageButton imageButton= (ImageButton) view;

    if(mediaPlayer==null){

      mediaPlayer = MediaPlayer.create(this, R.raw.seve);

      mediaPlayer.start();

      //把图标修改为暂停的图标

      imageButton.setImageResource(android.R.drawable.ic_media_pause);

      //获取音乐的总时长

      intmuiscsum=mediaPlayer.getDuration();

      //设置进度条的最大值为总时长

       seekBar.setMax(muiscsum);

 

       //执行一个多线程的耗时操作

       newMyThread().start();

 

       tv_mian_stop.setText(newTimeUtil().secToTime(muiscsum/1000)+"");

    }elseif(mediaPlayer.isPlaying()){

      mediaPlayer.pause();

      imageButton.setImageResource(android.R.drawable.ic_media_play);

    }else{

      mediaPlayer.start();

      imageButton.setImageResource(android.R.drawable.ic_media_pause);

    }

  }

 

 

  classMyThreadextendsThread{

    @Override

    publicvoidrun() {

      super.run();

      //当进度条的当前值小于最大值时进度条发生改变

      while(seekBar.getProgress()<=seekBar.getMax()){

 

      //获取当前音乐播放的位置

      musicaction = mediaPlayer.getCurrentPosition();

      //让进度条动起来

     seekBar.setProgress(musicaction);

 

      }

 

    }

  }

 

 

}

时间格式转化类:

 代码如下

publicclassTimeUtil {

 

  publicstaticString secToTime(inttime) {

    String timeStr =null;

    inthour =0;

    intminute =0;

    intsecond =0;

    if(time <=0)

      return"00:00";

    else{

      minute = time /60;

      if(minute<60) {

        second = time %60;

        timeStr = unitFormat(minute) +":"+ unitFormat(second);

      }else{

        hour = minute /60;

        if(hour >99)

          return"99:59:59";

        minute = minute %60;

        second = time - hour *3600- minute *60;

        timeStr = unitFormat(hour) +":"+ unitFormat(minute) +":"+ unitFormat(second);

      }

    }

    returntimeStr;

  }

 

  privatestaticString unitFormat(inti) {

    String retStr =null;

    if(i >=0&& i<10)

      retStr ="0"+ Integer.toString(i);

    else

      retStr =""+ i;

    returnretStr;

  }

 

}

真机效果图:

本文来源:http://www.bbyears.com/jiaocheng/124362.html

热门标签

更多>>

本类排行