用Android Studio写一个音乐播放器的代码
时间: 2023-08-07 15:41:59 浏览: 115
Andriod Studio写的安卓音乐播放器(包含完整项目代码文件、APK、报告)
5星 · 资源好评率100%
好的,以下是一个简单的Android Studio音乐播放器的代码,希望对你有所帮助:
首先在AndroidManifest.xml文件中添加以下权限:
```
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
```
然后在布局文件中添加以下组件:
```
<Button
android:id="@+id/btn_play_pause"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Play/Pause" />
<Button
android:id="@+id/btn_stop"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Stop" />
<SeekBar
android:id="@+id/seek_bar"
android:layout_width="match_parent"
android:layout_height="wrap_content" />
<TextView
android:id="@+id/tv_song_title"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="Song Title" />
```
在Java代码中实现以下逻辑:
```
public class MainActivity extends AppCompatActivity {
private MediaPlayer mediaPlayer;
private Button btnPlayPause, btnStop;
private SeekBar seekBar;
private TextView tvSongTitle;
private int totalTime;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
btnPlayPause = findViewById(R.id.btn_play_pause);
btnStop = findViewById(R.id.btn_stop);
seekBar = findViewById(R.id.seek_bar);
tvSongTitle = findViewById(R.id.tv_song_title);
// 初始化MediaPlayer
mediaPlayer = MediaPlayer.create(this, R.raw.song);
// 获取歌曲总时长
totalTime = mediaPlayer.getDuration();
// 设置SeekBar的最大值
seekBar.setMax(totalTime);
// 播放/暂停按钮点击事件
btnPlayPause.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
if (mediaPlayer.isPlaying()) {
mediaPlayer.pause();
btnPlayPause.setText("Play");
} else {
mediaPlayer.start();
btnPlayPause.setText("Pause");
updateSeekBar();
}
}
});
// 停止按钮点击事件
btnStop.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
mediaPlayer.stop();
mediaPlayer = MediaPlayer.create(getApplicationContext(), R.raw.song);
seekBar.setProgress(0);
btnPlayPause.setText("Play");
}
});
// SeekBar拖动事件
seekBar.setOnSeekBarChangeListener(new SeekBar.OnSeekBarChangeListener() {
@Override
public void onProgressChanged(SeekBar seekBar, int progress, boolean fromUser) {
if (fromUser) {
mediaPlayer.seekTo(progress);
}
}
@Override
public void onStartTrackingTouch(SeekBar seekBar) {
mediaPlayer.pause();
}
@Override
public void onStopTrackingTouch(SeekBar seekBar) {
mediaPlayer.start();
updateSeekBar();
}
});
}
// 更新SeekBar的进度
private void updateSeekBar() {
Handler handler = new Handler();
Runnable runnable = new Runnable() {
@Override
public void run() {
int currentPosition = mediaPlayer.getCurrentPosition();
seekBar.setProgress(currentPosition);
handler.postDelayed(this, 1000);
}
};
handler.postDelayed(runnable, 1000);
}
}
```
需要注意的是,这里使用了本地的音乐文件,如果要播放网络音乐需要使用异步加载等相关技术,还需要处理更多的异常情况,这里只是一个简单的例子。
阅读全文