文章标题
2016-11-14 09:08
295 查看
package com.example.day_mediaplayer;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.Timer;
import java.util.TimerTask;
import android.app.Activity;
import android.media.MediaPlayer;
import android.media.MediaPlayer.OnCompletionListener;
import android.media.MediaPlayer.OnPreparedListener;
import android.os.Bundle;
import android.view.View;
import android.widget.SeekBar;
import android.widget.SeekBar.OnSeekBarChangeListener;
import android.widget.TextView;
import android.widget.Toast;
public class MainActivity extends Activity {
// player = MediaPlayer.create(this, R.raw.bag);
/**
* 格式化毫秒值
* @param duration
* @return
*/
private String formatDate(int duration) {
SimpleDateFormat format =new SimpleDateFormat(“mm:ss”);
// Log.i(“TAG”, str_format);
}
}
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.Timer;
import java.util.TimerTask;
import android.app.Activity;
import android.media.MediaPlayer;
import android.media.MediaPlayer.OnCompletionListener;
import android.media.MediaPlayer.OnPreparedListener;
import android.os.Bundle;
import android.view.View;
import android.widget.SeekBar;
import android.widget.SeekBar.OnSeekBarChangeListener;
import android.widget.TextView;
import android.widget.Toast;
public class MainActivity extends Activity {
private MediaPlayer player; private SeekBar seekBar; private Timer timer; // 记录当前播放的是哪一首歌曲 int index; int[] music_id = new int[] { R.raw.bag, R.raw.cl, R.raw.qq, }; //歌曲当前进度 private TextView textView_progress; //歌曲总时长 private TextView textView_total; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); textView_progress = (TextView) findViewById(R.id.textView_progress); textView_total = (TextView) findViewById(R.id.textView_total); seekBar = (SeekBar) findViewById(R.id.seekBar); // seekbar改变监听 seekBar.setOnSeekBarChangeListener(new OnSeekBarChangeListener() { @Override // seekbar停止触摸 public void onStopTrackingTouch(SeekBar seekBar) { // 得到seekbar停止时的进度 int progress = seekBar.getProgress(); // 把停止进度赋值给音频的当前进度 player.seekTo(progress); // 当用户手指离开到seekbar的时候,就认为用户要手动改变音频进度的操作结束,再继续开启timer计时器,由歌曲的进度控制seekbar musicCurrent(); } @Override // seekbar开始触摸 public void onStartTrackingTouch(SeekBar seekBar) { // 当用户手指触摸到seekbar的时候,就认为用户要手动改变音频的进度,停止timer计时器 timer.cancel(); } @Override public void onProgressChanged(SeekBar seekBar, int progress, boolean fromUser) { } });
// player = MediaPlayer.create(this, R.raw.bag);
} // 开始 public void start(View v) { // 默认播放第一首 start_music(music_id[0]); index = 0; } // 暂停 public void pause(View v) { if (player != null && player.isPlaying()) { player.pause(); } } // 停止 public void stop(View v) { stop_music(); } // 下一首,就是当前歌曲下标+1 public void next(View v) { index=index+1; if (index < music_id.length) { stop_music(); start_music(music_id[index]); } else { Toast.makeText(this, " 没有更多音乐了 ", 0).show(); } } // 播放音乐的公共方法 private void start_music(int id) { if (player == null) { player = MediaPlayer.create(this, id); } //播放完成的监听 player.setOnCompletionListener(new OnCompletionListener() { @Override public void onCompletion(MediaPlayer mp) { next(null); } }); // 得到歌曲的时长 int duration = player.getDuration(); //格式化毫秒值 String formatDate = formatDate(duration); //设置歌曲总时长 textView_total.setText(formatDate); // 设置seekBar最大值,就是歌曲的总时长 seekBar.setMax(duration); player.setOnPreparedListener(new OnPreparedListener() { @Override public void onPrepared(MediaPlayer mp) { // TODO Auto-generated method stub mp.start(); } }); // 获取歌曲实时进度,并设置个seekbar当前进度 musicCurrent(); }
/**
* 格式化毫秒值
* @param duration
* @return
*/
private String formatDate(int duration) {
SimpleDateFormat format =new SimpleDateFormat(“mm:ss”);
Date date=new Date(duration); String str_format = format.format(date); return str_format;
// Log.i(“TAG”, str_format);
}
// 停止音乐的公共方法 private void stop_music() { if(timer!=null){ timer.cancel(); } if (player != null) { player.stop(); // 回收资源 player.release(); player = null; } } /** * //获取歌曲实时进度,并设置个seekbar当前进度 */ public void musicCurrent() { timer = new Timer(); timer.schedule(new TimerTask() { @Override public void run() { if (player != null) { // 得到当前歌曲的实时进度 final int currentPosition = player.getCurrentPosition(); seekBar.setProgress(currentPosition); //更新歌曲的实时进度 runOnUiThread(new Runnable() { @Override public void run() { textView_progress.setText(formatDate(currentPosition)); } }); } } }, 0, 500); }
}