Android音樂播放器 MediaPlayer+SeerBar
先上效果圖:
MediaPlayer簡介:
mediaPlayer音樂的三種播放方式:
第一種:
mediaPlyer播放記憶體音樂
mediaPlayer = MediaPlayer.create(this, R.raw.ll);
第二種: mediaPlyer播放記憶體卡音樂 mediaPlayer.setDataSource(this, Uri.parse("file://storage/sdcard/Music/aabbcc.mp3"));
記憶體卡播放音樂必須權重限 <uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
第三種: mediaPlyer播放網絡音樂,播放網絡音樂時要注意手機必須聯網或同伺服器在同一個 區域網路下面。 mediaPlayer.setDataSource(this, Uri.parse("http://192.168.43.89:8080/dd/dd.mp3"));
mediaPlyer播放網絡音樂權限 <uses-permission android:name="android.permission.INTERNET" />
mediaPlyer:
MediaPlayer簡介:
mediaPlayer音樂的三種播放方式:
第一種:
mediaPlyer播放記憶體音樂
mediaPlayer = MediaPlayer.create(this, R.raw.ll);
第二種: mediaPlyer播放記憶體卡音樂 mediaPlayer.setDataSource(this, Uri.parse("file://storage/sdcard/Music/aabbcc.mp3"));
記憶體卡播放音樂必須權重限 <uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
mediaPlayer.setDataSource(this, Uri.parse("http://192.168.43.89:8080/dd/dd.mp3"));
mediaPlyer播放網絡音樂權限 <uses-permission android:name="android.permission.INTERNET" />
mediaPlyer:
start():開始或者恢複播放
stop():停止播放
pause():暫停播放
getDuration();擷取音樂總時間
getCurrentPosition();擷取音樂目前播放的位置
seekTo(sb);設定在某個位置播放
isPlaying();判斷音樂目前是否在播放
下面是seekbar+ImageButton實作的一個播放、停止、快進、後退
public class MainActivity extends AppCompatActivity {
private MediaPlayer mediaPlayer;
private SeekBar sb_main_seekBar;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
sb_main_seekBar = (SeekBar) findViewById(R.id.sb_main_seekBar);
//進度條滑動事件
sb_main_seekBar.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) {
//擷取seekBar的目前滑動位置
int sb=sb_main_seekBar.getProgress();
//快進音樂
mediaPlayer.seekTo(sb);
}
});
}
public void isplayandpause(View view){
final ImageView imageView= (ImageView) view;
//記憶體播放音樂
// if (mediaPlayer==null) {
// mediaPlayer = MediaPlayer.create(this, R.raw.ll);
// mediaPlayer.setOnPreparedListener(new MediaPlayer.OnPreparedListener() {
// @Override
// public void onPrepared(MediaPlayer mediaPlayer) {
// mediaPlayer.start();
// imageView.setImageResource(android.R.drawable.ic_media_pause);
// //進度條最大值
// sb_main_seekBar.setMax(mediaPlayer.getDuration());
// new myThread().start();
// }
// });
//
// }else if (mediaPlayer.isPlaying()) {
// //暫停音樂
// mediaPlayer.pause();
// imageView.setImageResource(android.R.drawable.ic_media_play);
// }else{
// //播放音樂
// mediaPlayer.start();
// imageView.setImageResource(android.R.drawable.ic_media_pause);
// }
// //SD卡播放音樂
// if (mediaPlayer==null) {
// mediaPlayer=new MediaPlayer();
// try {
// //設定音樂SD卡路徑
// mediaPlayer.setDataSource(this, Uri.parse("file://storage/sdcard/Music/aabbcc.mp3"));
// //準備
// mediaPlayer.prepare();
// } catch (IOException e) {
// e.printStackTrace();
// }
// mediaPlayer.setOnPreparedListener(new MediaPlayer.OnPreparedListener() {
// @Override
// public void onPrepared(MediaPlayer mediaPlayer) {
// mediaPlayer.start();
// imageView.setImageResource(android.R.drawable.ic_media_pause);
// //進度條最大值
// sb_main_seekBar.setMax(mediaPlayer.getDuration());
// new myThread().start();
// }
// });
//
// }else if (mediaPlayer.isPlaying()) {
// //暫停音樂
// mediaPlayer.pause();
// imageView.setImageResource(android.R.drawable.ic_media_play);
// }else{
// //播放音樂
// mediaPlayer.start();
// imageView.setImageResource(android.R.drawable.ic_media_pause);
// }
//網絡播放音樂
if (mediaPlayer==null) {
mediaPlayer=new MediaPlayer();
try {
//網絡位址
mediaPlayer.setDataSource(this, Uri.parse("http://192.168.43.89:8080/dd/dd.mp3"));
//準備
mediaPlayer.prepareAsync();
} catch (IOException e) {
e.printStackTrace();
}
mediaPlayer.setOnPreparedListener(new MediaPlayer.OnPreparedListener() {
@Override
public void onPrepared(MediaPlayer mediaPlayer) {
mediaPlayer.start();
imageView.setImageResource(android.R.drawable.ic_media_pause);
//進度條最大值
sb_main_seekBar.setMax(mediaPlayer.getDuration());
new myThread().start();
}
});
}else if (mediaPlayer.isPlaying()) {
//暫停音樂
mediaPlayer.pause();
imageView.setImageResource(android.R.drawable.ic_media_play);
}else{
//播放音樂
mediaPlayer.start();
imageView.setImageResource(android.R.drawable.ic_media_pause);
}
}
//seekbar
class myThread extends Thread{
@Override
public void run() {
super.run();
while(sb_main_seekBar.getProgress()<=sb_main_seekBar.getMax()){
//擷取音樂目前播放的位置
int position=mediaPlayer.getCurrentPosition();
sb_main_seekBar.setProgress(position);
}
}
};
}