Android 音频播放,点击播放按钮跳转到相应的activity,该activity有seekbar控制播放进度和监听显示用户控制的进度实验代码
时间: 2023-06-11 17:10:39 浏览: 129
android音乐播放器中的进度条(音量控制+进度)
5星 · 资源好评率100%
以下是一个简单的 Android 音频播放器的代码示例,包括了播放、暂停、停止、seekbar 的控制和监听:
MainActivity.java:
```java
public class MainActivity extends AppCompatActivity implements View.OnClickListener {
private MediaPlayer mediaPlayer;
private Button btnPlay, btnPause, btnStop;
private SeekBar seekBar;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
btnPlay = findViewById(R.id.btn_play);
btnPause = findViewById(R.id.btn_pause);
btnStop = findViewById(R.id.btn_stop);
seekBar = findViewById(R.id.seek_bar);
btnPlay.setOnClickListener(this);
btnPause.setOnClickListener(this);
btnStop.setOnClickListener(this);
mediaPlayer = MediaPlayer.create(this, R.raw.song); // 播放本地资源文件
mediaPlayer.setOnCompletionListener(new MediaPlayer.OnCompletionListener() {
@Override
public void onCompletion(MediaPlayer mp) {
// 播放完毕
btnPlay.setEnabled(true);
btnPause.setEnabled(false);
btnStop.setEnabled(false);
}
});
seekBar.setMax(mediaPlayer.getDuration()); // 设置 seekbar 最大值为音频长度
seekBar.setOnSeekBarChangeListener(new SeekBar.OnSeekBarChangeListener() {
@Override
public void onProgressChanged(SeekBar seekBar, int progress, boolean fromUser) {
if (fromUser) {
mediaPlayer.seekTo(progress); // 用户拖动 seekbar 时改变播放进度
}
}
@Override
public void onStartTrackingTouch(SeekBar seekBar) {
}
@Override
public void onStopTrackingTouch(SeekBar seekBar) {
}
});
}
@Override
public void onClick(View v) {
switch (v.getId()) {
case R.id.btn_play:
mediaPlayer.start(); // 播放
btnPlay.setEnabled(false);
btnPause.setEnabled(true);
btnStop.setEnabled(true);
break;
case R.id.btn_pause:
mediaPlayer.pause(); // 暂停
btnPlay.setEnabled(true);
btnPause.setEnabled(false);
btnStop.setEnabled(true);
break;
case R.id.btn_stop:
mediaPlayer.stop(); // 停止
btnPlay.setEnabled(true);
btnPause.setEnabled(false);
btnStop.setEnabled(false);
mediaPlayer = MediaPlayer.create(this, R.raw.song); // 重新创建 MediaPlayer 对象
seekBar.setProgress(0); // seekbar 回到初始位置
break;
default:
break;
}
}
@Override
protected void onDestroy() {
super.onDestroy();
if (mediaPlayer != null) {
mediaPlayer.stop();
mediaPlayer.release(); // 释放资源
}
}
}
```
activity_main.xml:
```xml
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/activity_main"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
android:padding="16dp">
<Button
android:id="@+id/btn_play"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="播放" />
<Button
android:id="@+id/btn_pause"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="暂停"
android:enabled="false" />
<Button
android:id="@+id/btn_stop"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="停止"
android:enabled="false" />
<SeekBar
android:id="@+id/seek_bar"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="16dp"
android:max="100"
android:progress="0" />
</LinearLayout>
```
需要注意的是,需要在 AndroidManifest.xml 中添加以下权限:
```xml
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
```
阅读全文