基于Android系统的多媒体播放器功能的实现代码
时间: 2023-11-28 16:50:16 浏览: 34
以下是一个简单的基于Android系统的多媒体播放器功能的实现代码:
```
import android.media.MediaPlayer;
import android.os.Bundle;
import android.support.v7.app.AppCompatActivity;
import android.view.View;
import android.widget.Button;
import android.widget.SeekBar;
import java.io.IOException;
public class MainActivity extends AppCompatActivity implements View.OnClickListener, MediaPlayer.OnCompletionListener, SeekBar.OnSeekBarChangeListener {
private Button buttonPlayPause;
private SeekBar seekBar;
private MediaPlayer mediaPlayer;
private int mediaFileLength;
private int realTimeLength;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
buttonPlayPause = (Button) findViewById(R.id.buttonPlayPause);
buttonPlayPause.setOnClickListener(this);
seekBar = (SeekBar) findViewById(R.id.seekBar);
seekBar.setOnSeekBarChangeListener(this);
mediaPlayer = new MediaPlayer();
mediaPlayer.setOnCompletionListener(this);
}
@Override
public void onClick(View view) {
if (view == buttonPlayPause) {
if (!mediaPlayer.isPlaying()) {
mediaPlayer.start();
buttonPlayPause.setText("Pause");
} else {
mediaPlayer.pause();
buttonPlayPause.setText("Play");
}
seekBar.setMax(mediaPlayer.getDuration());
mediaFileLength = mediaPlayer.getDuration();
realTimeLength = mediaFileLength;
seekBar.setProgress(0);
}
}
@Override
public void onCompletion(MediaPlayer mediaPlayer) {
buttonPlayPause.setText("Play");
mediaPlayer.seekTo(0);
seekBar.setProgress(0);
}
@Override
public void onProgressChanged(SeekBar seekBar, int progress, boolean fromUser) {
if (fromUser) {
mediaPlayer.seekTo(progress);
seekBar.setProgress(progress);
}
}
@Override
public void onStartTrackingTouch(SeekBar seekBar) {
}
@Override
public void onStopTrackingTouch(SeekBar seekBar) {
}
@Override
protected void onDestroy() {
super.onDestroy();
mediaPlayer.release();
mediaPlayer = null;
}
}
```
此代码首先定义了一个MediaPlayer对象和一个SeekBar对象,然后在onCreate()方法中初始化这些对象并设置相关的监听器。然后,在onClick()方法中,它检查MediaPlayer是否正在播放,如果它是,则暂停它,否则开始它。它还设置SeekBar的最大值为MediaPlayer的持续时间,并将媒体文件长度和实时长度设置为MediaPlayer的持续时间。在onCompletion()方法中,当MediaPlayer完成播放时,它将按钮文本设置为“播放”,并将MediaPlayer的位置设置为0,并将SeekBar的进度设置为0。在onProgressChanged()方法中,当用户拖动SeekBar时,会将MediaPlayer的位置设置为SeekBar的进度,并将SeekBar的进度设置为MediaPlayer的位置。最后,在onDestroy()方法中,它释放MediaPlayer对象。