Android 音频播放,点击播放按钮跳转到相应的activity,该activity有seekbar控制播放进度和监听显示用户控制的进度
时间: 2023-06-11 12:10:44 浏览: 226
实现这个功能,你需要先在你的播放按钮的点击事件中启动一个新的Activity,然后在这个新的Activity中添加一个SeekBar控件,用于控制音频的进度。
在新的Activity中,你需要创建一个MediaPlayer对象,用于播放音频。在SeekBar的OnSeekBarChangeListener中,你可以监听用户的进度变化,并将其应用到MediaPlayer对象上。
以下是一个简单的实现示例:
1. 在你的播放按钮的点击事件中启动新的Activity:
```java
Intent intent = new Intent(this, AudioPlayerActivity.class);
startActivity(intent);
```
2. 在AudioPlayerActivity中,添加一个SeekBar控件,用于控制音频的进度:
```xml
<SeekBar
android:id="@+id/seekBar"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:max="100"
android:progress="0" />
```
3. 在AudioPlayerActivity中,在onCreate方法中创建一个MediaPlayer对象,加载音频文件,并设置SeekBar的OnSeekBarChangeListener:
```java
SeekBar seekBar = findViewById(R.id.seekBar);
MediaPlayer mediaPlayer = MediaPlayer.create(this, R.raw.audio);
mediaPlayer.setOnPreparedListener(new MediaPlayer.OnPreparedListener() {
@Override
public void onPrepared(MediaPlayer mediaPlayer) {
seekBar.setMax(mediaPlayer.getDuration());
mediaPlayer.start();
}
});
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) {}
@Override
public void onStopTrackingTouch(SeekBar seekBar) {}
});
```
在这个示例中,我们使用了MediaPlayer的setOnPreparedListener方法,在MediaPlayer准备好播放后开始播放,并设置SeekBar的最大值为音频的总时长。在SeekBar的OnSeekBarChangeListener中,我们监听用户的进度变化,如果是用户改变了进度,则将MediaPlayer的当前播放位置设置为SeekBar的进度。
阅读全文