1.页面布局
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:id="@+id/activity_main"
android:layout_width="match_parent"
android:layout_height="match_parent">
<SeekBar
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/seekBar"
android:layout_weight="1" />
<ImageButton
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:src="@android:drawable/ic_media_play"
android:onClick="media"/>
</LinearLayout>
2.MainActivity.java代码
public class MainActivity extends AppCompatActivity {
private MediaPlayer mediaPlayer;
private SeekBar seekBar;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
seekBar = (SeekBar) findViewById(R.id.seekBar);
//给进度条设置拖动事件
seekBar.setOnSeekBarChangeListener(new SeekBar.OnSeekBarChangeListener() {
//值发生改变时调用
@Override
public void onProgressChanged(SeekBar seekBar, int progress, boolean fromUser) {
}
//开始触摸时调用
@Override
public void onStartTrackingTouch(SeekBar seekBar) {
}
//停止触摸时调用
@Override
public void onStopTrackingTouch(SeekBar seekBar) {
//获取停止拖动后的进度
int progress = seekBar.getProgress();
mediaPlayer.seekTo(progress);
}
});
}
// 播放应用内的音频文件
// public void media(View view) {
// ImageButton imageButton = (ImageButton) view;
// if (mediaPlayer==null) {
// //音频文件的路径
// mediaPlayer = MediaPlayer.create(this, R.raw.abc);
// //播放音乐
// mediaPlayer.start();
// //当音乐播放时改变图片
// imageButton.setImageResource(android.R.drawable.ic_media_pause);
// //获取音乐的播放时间长度
// int duration=mediaPlayer.getDuration();
// //设置进度条的最大值
// seekBar.setMax(duration);
// //调用子线程
// new Mythread().start();
// //如果音频正在播放
// }else if(mediaPlayer.isPlaying()){
// //影片暂停
// mediaPlayer.pause();
// imageButton.setImageResource(android.R.drawable.ic_media_play);
// }else{
// //音频播放
// mediaPlayer.start();
// imageButton.setImageResource(android.R.drawable.ic_media_pause);
// }
// }
// //播放内存卡中的音频文件
// public void media(View view) throws IOException {
// ImageButton imageButton = (ImageButton) view;
// if (mediaPlayer == null) {
// mediaPlayer = new MediaPlayer();
// //设置音频流的类型
// mediaPlayer.setAudioStreamType(AudioManager.STREAM_MUSIC);
// //设置音频的来源
// mediaPlayer.setDataSource(this, Uri.parse("file://mnt/sdcard/Music/a.mp3"));
// //准备一下
// mediaPlayer.prepare();
// //播放音乐
// mediaPlayer.start();
// //当音乐播放时改变图片
// imageButton.setImageResource(android.R.drawable.ic_media_pause);
// //获取音乐的播放时间长度
// int duration = mediaPlayer.getDuration();
// //设置进度条的最大值
// seekBar.setMax(duration);
// //调用子线程
// new Mythread().start();
// //如果音频正在播放
// } else if (mediaPlayer.isPlaying()) {
// //影片暂停
// mediaPlayer.pause();
// imageButton.setImageResource(android.R.drawable.ic_media_play);
// } else {
// //音频播放
// mediaPlayer.start();
// imageButton.setImageResource(android.R.drawable.ic_media_pause);
// }
// }
//网络播放(通过局域网播放电脑上的音频文件)
public void media(View view) throws IOException {
final ImageButton imageButton = (ImageButton) view;
if (mediaPlayer == null) {
mediaPlayer = new MediaPlayer();
//设置音频流的类型
mediaPlayer.setAudioStreamType(AudioManager.STREAM_MUSIC);
//设置音频的来源
mediaPlayer.setDataSource(this, Uri.parse("http://192.168.43.149:8080/b.mp3"));
//异步准备
mediaPlayer.prepareAsync();
//设置准备完成的监听
mediaPlayer.setOnPreparedListener(new MediaPlayer.OnPreparedListener() {
@Override
public void onPrepared(MediaPlayer mp) {
//播放音乐
mediaPlayer.start();
//当音乐播放时改变图片
imageButton.setImageResource(android.R.drawable.ic_media_pause);
//获取音乐的播放时间长度
int duration = mediaPlayer.getDuration();
//设置进度条的最大值
seekBar.setMax(duration);
//调用子线程
new Mythread().start();
}
});
//如果音频正在播放
} else if (mediaPlayer.isPlaying()) {
//影片暂停
mediaPlayer.pause();
imageButton.setImageResource(android.R.drawable.ic_media_play);
} else {
//音频播放
mediaPlayer.start();
imageButton.setImageResource(android.R.drawable.ic_media_pause);
}
}
class Mythread extends Thread {
@Override
public void run() {
while (seekBar.getProgress() <= seekBar.getMax()) {
//获取音乐的当前播放位置
int current = mediaPlayer.getCurrentPosition();
seekBar.setProgress(current);
}
}
}
}
如果你要读取内存卡的音频文件的要添加权限
<!--添加读取内存卡的权限-->
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE"></uses-permission>
你要播放网络上的音频文件的要添加一下权限
<!--添加联网的权限-->
<uses-permission android:name="android.permission.INTERNET"></uses-permission>