Android MediaPlayer实现简易的音乐播放器
MediaPlayer 这个类是音乐播放器的核心,借助这个类,实现了简易的音乐播放
主要用到的方法
mediaPlayer.start();(播放)
mediaPlayer.pause();(暂停)
mediaPlayer.stop();(停止)
音乐它可以来源于
1、内存,
2、存储卡,
3、网络
1、来源于内存的
需要在 res 目录下面建一个 raw 文件夹,用来存放需要播放的音乐
1、使用 MediaPlayer.create(this, R.raw.summer_love); 创建Mediaplayer对象
2、给Mediaplayer设置类型mediaPlayer.setAudioStreamType(AudioManager.STREAM_MUSIC);
中间设置下图标,进度条
3、最后 mediaPlayer.start();
/**
* 播放or暂停
* @param view
*/
public void isPlayOrPause(View view){
final ImageButton ib_main_play = (ImageButton)view;
//判断MediaPlay的状态
if(mediaPlayer == null){ //1、为空,也就是第一次
//1、内存中的音频文件
// mediaPlayer = MediaPlayer.create(this, R.raw.summer_love);
//设置类型
mediaPlayer.setAudioStreamType(AudioManager.STREAM_MUSIC);
//播放
mediaPlayer.start();
//改变图标
ib_main_play.setImageResource(android.R.drawable.ic_media_pause);
//获取音乐总时长
int duration = mediaPlayer.getDuration();
//设置seekBar总长
sb_main_music.setMax(duration);
//使进度条跟随随音乐长度
new MyThread().start();
} else if(mediaPlayer.isPlaying()){ //2、正在播放?
mediaPlayer.pause();
ib_main_play.setImageResource(android.R.drawable.ic_media_play);
} else { //3、暂停
mediaPlayer.start();
ib_main_play.setImageResource(android.R.drawable.ic_media_pause);
}
}
2、内存卡、网络
方便测试,我把音乐放在了特定的文件夹里
这两种的 MediaPlayer 创建方式和在内存中的音乐数据不同
1、通过 new 一个 MediaPlayer 对象 ,
2、设置类型
3、设置路径(路径需要符合 “file://“(本地文件)/”http://”(网络)协议 )
4、准备((存储卡)mediaPlayer.prepare();/(网络)mediaPlayer.prepareAsync();)
5、监听是否准备完成
6、启动(播放)
//实例化MediaPlayer
mediaPlayer = new MediaPlayer();
//设置类型
mediaPlayer.setAudioStreamType(AudioManager.STREAM_MUSIC);
try {
//设置音频
//内存卡
// mediaPlayer.setDataSource(this,Uri.parse("file://mnt/sdcard/down.mp3"));
//需要准备(内存卡)
// mediaPlayer.prepare();
//网络
mediaPlayer.setDataSource(this,Uri.parse("http://192.168.0.101:8080/yasu.mp3"));
//准备(网络)
mediaPlayer.prepareAsync();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
//准备完成监听
mediaPlayer.setOnPreparedListener(new OnPreparedListener() {
@Override
public void onPrepared(MediaPlayer mp) {
// TODO Auto-generated method stub
//播放
mediaPlayer.start();
//改变图标
ib_main_play.setImageResource(android.R.drawable.ic_media_pause);
//获取音乐总时长
int duration = mediaPlayer.getDuration();
//设置seekBar总长
sb_main_music.setMax(duration);
//使进度条随音乐长度
new MyThread().start();
}
});
最后别忘了添加权限
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE"/>
<uses-permission android:name="android.permission.INTERNET"/>