给我写一个安卓开发程序音乐播放器
时间: 2023-11-13 14:04:40 浏览: 33
好的,以下是一个简单的安卓音乐播放器程序的代码:
1. 首先,在你的布局文件中添加一个播放器视图:
```xml
<LinearLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical">
<ImageView
android:id="@+id/album_art"
android:layout_width="match_parent"
android:layout_height="0dp"
android:layout_weight="1"
android:scaleType="centerCrop"
android:src="@drawable/default_album_art" />
<TextView
android:id="@+id/song_title"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:gravity="center"
android:text="Song Title"
android:textSize="24sp" />
<SeekBar
android:id="@+id/seek_bar"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:max="100"
android:progress="0" />
<TextView
android:id="@+id/time_elapsed"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="0:00" />
<Button
android:id="@+id/play_pause_button"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Play" />
<TextView
android:id="@+id/time_remaining"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="0:00" />
</LinearLayout>
```
2. 在你的 Activity 类中,添加以下代码:
```java
public class MusicPlayerActivity extends AppCompatActivity {
private MediaPlayer mediaPlayer;
private boolean isPlaying = false;
private boolean isPaused = false;
private Button playPauseButton;
private TextView songTitleTextView;
private ImageView albumArtImageView;
private SeekBar seekBar;
private Handler handler;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_music_player);
// 获取视图对象
playPauseButton = findViewById(R.id.play_pause_button);
songTitleTextView = findViewById(R.id.song_title);
albumArtImageView = findViewById(R.id.album_art);
seekBar = findViewById(R.id.seek_bar);
// 创建 MediaPlayer 对象
mediaPlayer = MediaPlayer.create(this, R.raw.song);
// 设置播放器事件监听器
mediaPlayer.setOnCompletionListener(new MediaPlayer.OnCompletionListener() {
@Override
public void onCompletion(MediaPlayer mp) {
isPlaying = false;
isPaused = false;
playPauseButton.setText("Play");
seekBar.setProgress(0);
mediaPlayer.seekTo(0);
}
});
// 设置 SeekBar 监听器
seekBar.setOnSeekBarChangeListener(new SeekBar.OnSeekBarChangeListener() {
@Override
public void onProgressChanged(SeekBar seekBar, int progress, boolean fromUser) {
if (fromUser) {
mediaPlayer.seekTo(progress * mediaPlayer.getDuration() / 100);
updateTimeElapsed();
}
}
@Override
public void onStartTrackingTouch(SeekBar seekBar) {
// 暂停播放
if (isPlaying) {
isPaused = true;
mediaPlayer.pause();
playPauseButton.setText("Play");
}
}
@Override
public void onStopTrackingTouch(SeekBar seekBar) {
// 恢复播放
if (isPaused) {
mediaPlayer.start();
isPlaying = true;
isPaused = false;
playPauseButton.setText("Pause");
}
}
});
// 设置播放/暂停按钮监听器
playPauseButton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
if (isPlaying) {
mediaPlayer.pause();
isPlaying = false;
isPaused = true;
playPauseButton.setText("Play");
} else {
mediaPlayer.start();
isPlaying = true;
isPaused = false;
playPauseButton.setText("Pause");
}
}
});
// 更新播放时间
handler = new Handler();
handler.postDelayed(new Runnable() {
@Override
public void run() {
updateTimeElapsed();
handler.postDelayed(this, 1000);
}
}, 1000);
}
// 更新播放时间显示
private void updateTimeElapsed() {
int elapsedSeconds = mediaPlayer.getCurrentPosition() / 1000;
int remainingSeconds = (mediaPlayer.getDuration() - mediaPlayer.getCurrentPosition()) / 1000;
String elapsed = String.format(Locale.getDefault(), "%d:%02d", elapsedSeconds / 60, elapsedSeconds % 60);
String remaining = String.format(Locale.getDefault(), "-%d:%02d", remainingSeconds / 60, remainingSeconds % 60);
songTitleTextView.setText("Song Title");
albumArtImageView.setImageResource(R.drawable.default_album_art);
seekBar.setProgress(mediaPlayer.getCurrentPosition() * 100 / mediaPlayer.getDuration());
}
@Override
protected void onDestroy() {
super.onDestroy();
// 释放 MediaPlayer 对象
mediaPlayer.release();
}
}
```
这个程序还比较简单,只能播放一首歌曲,并且没有使用列表或其他高级功能。但是,它演示了如何使用 MediaPlayer 类来播放音乐,并且提供了一个简单的用户界面来控制播放器。