写一个Android音乐播放器
时间: 2023-11-10 15:07:02 浏览: 71
要写一个Android音乐播放器,需要以下步骤:
1. 创建一个新的Android项目,并添加必要的库和依赖。
2. 创建一个UI界面,包括播放/暂停按钮、上一曲/下一曲按钮、播放进度条、歌曲标题等。
3. 使用Android提供的MediaPlayer类来实现音乐播放功能。在播放之前,需要获取音频文件的URI或文件路径,并将其设置给MediaPlayer对象。
4. 实现按钮的点击事件,包括播放/暂停、上一曲/下一曲等。
5. 实现MediaPlayer的回调函数,包括播放完成事件、错误事件等。
6. 更新UI界面,包括显示歌曲标题、播放进度条等。
下面是一个简单的示例代码:
```
public class MainActivity extends AppCompatActivity implements View.OnClickListener, MediaPlayer.OnCompletionListener {
private Button btnPlayPause;
private Button btnPrev;
private Button btnNext;
private TextView tvTitle;
private SeekBar seekBar;
private MediaPlayer mediaPlayer;
private int currentTrack = 0;
private List<String> tracks = new ArrayList<>();
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
btnPlayPause = findViewById(R.id.btn_play_pause);
btnPrev = findViewById(R.id.btn_prev);
btnNext = findViewById(R.id.btn_next);
tvTitle = findViewById(R.id.tv_title);
seekBar = findViewById(R.id.seek_bar);
btnPlayPause.setOnClickListener(this);
btnPrev.setOnClickListener(this);
btnNext.setOnClickListener(this);
mediaPlayer = new MediaPlayer();
mediaPlayer.setOnCompletionListener(this);
tracks.add("track1.mp3");
tracks.add("track2.mp3");
tracks.add("track3.mp3");
playTrack(currentTrack);
}
@Override
public void onClick(View v) {
switch (v.getId()) {
case R.id.btn_play_pause:
if (mediaPlayer.isPlaying()) {
mediaPlayer.pause();
btnPlayPause.setText("Play");
} else {
mediaPlayer.start();
btnPlayPause.setText("Pause");
}
break;
case R.id.btn_prev:
if (currentTrack > 0) {
currentTrack--;
playTrack(currentTrack);
}
break;
case R.id.btn_next:
if (currentTrack < tracks.size() - 1) {
currentTrack++;
playTrack(currentTrack);
}
break;
}
}
@Override
public void onCompletion(MediaPlayer mp) {
if (currentTrack < tracks.size() - 1) {
currentTrack++;
playTrack(currentTrack);
}
}
private void playTrack(int trackIndex) {
try {
mediaPlayer.reset();
AssetFileDescriptor afd = getAssets().openFd(tracks.get(trackIndex));
mediaPlayer.setDataSource(afd.getFileDescriptor(), afd.getStartOffset(), afd.getLength());
mediaPlayer.prepare();
mediaPlayer.start();
btnPlayPause.setText("Pause");
tvTitle.setText(tracks.get(trackIndex));
seekBar.setMax(mediaPlayer.getDuration());
new Thread(new Runnable() {
@Override
public void run() {
while (mediaPlayer != null && mediaPlayer.isPlaying()) {
seekBar.setProgress(mediaPlayer.getCurrentPosition());
}
}
}).start();
} catch (IOException e) {
e.printStackTrace();
}
}
}
```
这个示例代码使用了MediaPlayer类来播放三个音频文件,同时实现了播放/暂停、上一曲/下一曲等按钮的点击事件。在播放完成时,自动播放下一曲。同时,使用了SeekBar来显示播放进度,以及显示当前播放的歌曲标题。
阅读全文