效果图:
package com.example.android26_medioplay;
import android.media.AudioManager;
import android.media.MediaPlayer;
import android.net.Uri;
import android.os.Environment;
import android.os.SystemClock;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.util.Log;
import android.view.View;
import android.widget.ImageButton;
import android.widget.SeekBar;
import java.io.IOException;
/**
* 媒体播放器
* MediaPlayer是一个封装的很好的音频、视频流媒体操作类
* 加载sd和网络需在清单文件加权限
*/
public class MainActivity extends AppCompatActivity {
private ImageButton ib_main;
private MediaPlayer mediaPlayer;
private SeekBar sb_mian;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
ib_main = (ImageButton) findViewById(R.id.ib_main);
sb_mian = (SeekBar) findViewById(R.id.sb_mian);
//设置进度条拖动的监听
sb_mian.setOnSeekBarChangeListener(new SeekBar.OnSeekBarChangeListener() {
@Override
public void onProgressChanged(SeekBar seekBar, int i, boolean b) {
}
@Override
public void onStartTrackingTouch(SeekBar seekBar) {
}
@Override
public void onStopTrackingTouch(SeekBar seekBar) {
//获取进度条拖动的位置
int progress=sb_mian.getProgress();
//跳转到拖动位置播放
mediaPlayer.seekTo(progress);
}
});
}
public void playmusic(View view){
if(mediaPlayer==null){
//播放内存卡sd的音乐
mediaPlayer = new MediaPlayer();
try {
//设置音频
mediaPlayer.setDataSource(this, Uri.parse("file//内部存储/musics/b.mp3"));
//拿网络音乐
// mediaPlayer.setDataSource(this, Uri.parse("http://193.168.1.70/Internet.mp3"));
//准备
mediaPlayer.prepare();
//异步准备
// mediaPlayer.prepareAsync();
} catch (IOException e) {
e.printStackTrace();
}
//播放内存raw的音乐
//mediaPlayer = MediaPlayer.create(this, R.raw.a);
//设置音乐完成的监听
// mediaPlayer.setOnPreparedListener(new MediaPlayer.OnPreparedListener() {
// @Override
// public void onPrepared(MediaPlayer mediaPlayer) {
mediaPlayer.start();
ib_main.setImageResource(android.R.drawable.ic_media_pause);
//获取音乐播放的总时长
int alltime=mediaPlayer.getDuration();
//给seekbar设置最大值
sb_mian.setMax(alltime);
new Mythread().start();
// }
// });
}else if(mediaPlayer.isPlaying()){
mediaPlayer.pause();
ib_main.setImageResource(android.R.drawable.ic_media_play);
}else{
ib_main.setImageResource(android.R.drawable.ic_media_pause);
mediaPlayer.start();
}
}
class Mythread extends Thread{
@Override
public void run() {
//当进度条小于等于进度条最大的时候做操作
while(sb_mian.getProgress()<=sb_mian.getMax()){
//获取当前进度条
int currentposition=mediaPlayer.getCurrentPosition();
//设置进度条为当前播放的位置
sb_mian.setProgress(currentposition);
}
super.run();
}
}
}