博主将会写三种简单的播放器,第一种是播放内存中的音乐,第二种是播放内存卡的音乐,第三种是播放网络中的音乐。
这次先做第一种播放内存中音乐的音乐播放器,这次做的播放器是由一个进度条和一个暂停或播放的按钮组成,点击播放则开始播放音乐,更换ImageButton的图标,可以拖动进度条来改播放音乐的位置。
先做一个最基本的布局
<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:id="@+id/ib_main_imageButton"
android:src="@android:drawable/ic_media_play"/>
这里需要注意的是要用到线程,大多数解释代码中都有,如有疑问私信博主释疑!
public class MainActivity extends AppCompatActivity {
private SeekBar seekBar;
private ImageButton ib_main_imageButton;
private MediaPlayer mediaPlayer;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
seekBar = (SeekBar) findViewById(R.id.seekBar);
ib_main_imageButton = (ImageButton) findViewById(R.id.ib_main_imageButton);
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) {
int progress=seekBar.getProgress();
mediaPlayer.seekTo(progress);
}
});
ib_main_imageButton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
if (mediaPlayer == null) {
//实例化MediaPlayer
mediaPlayer = MediaPlayer.create(getApplicationContext(), R.raw.music);
mediaPlayer.start();
//把图标修改成暂停图标
ib_main_imageButton.setImageResource(android.R.drawable.ic_media_pause);
//获得音乐的时长
int duration=mediaPlayer.getDuration();
//给进度条设置最大的值
seekBar.setMax(duration);
new MyThread().start();
}else if(mediaPlayer.isPlaying()) {
mediaPlayer.pause();
//把图标修改成播放图标
ib_main_imageButton.setImageResource(android.R.drawable.ic_media_play);
}else{
mediaPlayer.start();
//把图标修改成暂停图标
ib_main_imageButton.setImageResource(android.R.drawable.ic_media_pause);
}
}
});
}
class MyThread extends Thread{
@Override
public void run() {
super.run();
while(seekBar.getProgress()<=seekBar.getMax()){
//获取播放音乐的当前位置
int currentPosition=mediaPlayer.getCurrentPosition();
//让进度条动起来
seekBar.setProgress(currentPosition);
}
}
}
}
这样一个简单的音乐播放器就完成了,如果需要看播放内存卡中的音乐或者网络中的音乐请关注博主博客,感谢大家支持