android Mediaplayer播放一个音频代码
时间: 2023-05-26 07:03:52 浏览: 148
以下是一个简单的Android MediaPlayer播放音频的示例代码:
```
MediaPlayer mediaPlayer = new MediaPlayer();
mediaPlayer.setDataSource("http://www.example.com/audio.mp3");
mediaPlayer.prepare();
mediaPlayer.start();
```
其中,setDataSource()指定音频来源,可以是本地文件或远程URL。然后调用prepare()准备媒体播放器,最后调用start()开始播放。请注意,此代码应在非UI线程中执行。
相关问题
android 使用mediaplayer 播放音频代码
以下是一个简单的使用 `MediaPlayer` 播放音频的 Android 代码示例:
```java
// 创建 MediaPlayer 对象
MediaPlayer mediaPlayer = new MediaPlayer();
// 设置要播放的音频文件路径
String audioFilePath = "/path/to/audio/file.mp3";
mediaPlayer.setDataSource(audioFilePath);
// 准备 MediaPlayer
mediaPlayer.prepare();
// 开始播放
mediaPlayer.start();
// 播放结束时释放 MediaPlayer 资源
mediaPlayer.setOnCompletionListener(new MediaPlayer.OnCompletionListener() {
@Override
public void onCompletion(MediaPlayer mediaPlayer) {
mediaPlayer.release();
}
});
```
上述代码中,我们首先创建了一个 `MediaPlayer` 对象,并设置要播放的音频文件路径。然后,我们调用 `prepare()` 方法准备 `MediaPlayer`,最后调用 `start()` 方法开始播放音频。在播放结束时,我们使用 `setOnCompletionListener()` 方法来监听播放完成事件,并在回调中释放 `MediaPlayer` 资源。
请注意,由于 `MediaPlayer` 可能会抛出异常,因此最好将上述代码放在 `try-catch` 块中。
droid Mediaplayer播放一个音频代码,要有进度条
以下是一个droid Mediaplayer播放音频并带有进度条的示例代码:
step1:在xml文件中定义一个SeekBar和两个TextView
<SeekBar
android:id="@+id/seekBar"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginLeft="16dp"
android:layout_marginRight="16dp"
android:progressBackgroundTint="@color/colorPrimaryLight"
android:progressTint="@color/colorAccent"
android:thumbTint="@color/colorAccent" />
<TextView
android:id="@+id/tvCurrentTime"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginLeft="16dp"
android:text="00:00"
android:textSize="12sp" />
<TextView
android:id="@+id/tvTotalTime"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginRight="16dp"
android:gravity="end"
android:text="00:00"
android:textSize="12sp" />
step2:在Activity或Fragment中定义MediaPlayer和SeekBar及对应的TextView
private MediaPlayer mediaPlayer;
private SeekBar seekBar;
private TextView tvCurrentTime;
private TextView tvTotalTime;
step3:在onCreate()或onViewCreated()中初始化MediaPlayer和SeekBar及对应的TextView
mediaPlayer = MediaPlayer.create(this, R.raw.my_audio_file);
seekBar = findViewById(R.id.seekBar);
tvCurrentTime = findViewById(R.id.tvCurrentTime);
tvTotalTime = findViewById(R.id.tvTotalTime);
seekBar.setMax(mediaPlayer.getDuration());
step4:在SeekBar的onProgressChanged()回调中更新mediaPlayer的进度
seekBar.setOnSeekBarChangeListener(new SeekBar.OnSeekBarChangeListener() {
@Override
public void onProgressChanged(SeekBar seekBar, int progress, boolean fromUser) {
if (fromUser) {
mediaPlayer.seekTo(progress);
tvCurrentTime.setText(formatTime(progress));
}
}
@Override
public void onStartTrackingTouch(SeekBar seekBar) {}
@Override
public void onStopTrackingTouch(SeekBar seekBar) {}
});
step5:在MediaPlayer的onPrepared()回调中设置TextView的内容和启动SeekBar的更新进度线程
mediaPlayer.setOnPreparedListener(new MediaPlayer.OnPreparedListener() {
@Override
public void onPrepared(MediaPlayer mp) {
int duration = mediaPlayer.getDuration();
tvTotalTime.setText(formatTime(duration));
new Thread(new Runnable() {
@Override
public void run() {
while (mediaPlayer.isPlaying()) {
try {
int position = mediaPlayer.getCurrentPosition();
seekBar.setProgress(position);
tvCurrentTime.post(new Runnable() {
@Override
public void run() {
tvCurrentTime.setText(formatTime(mediaPlayer.getCurrentPosition()));
}
});
Thread.sleep(1000);
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}
}).start();
mediaPlayer.start();
}
});
step6:为了避免内存泄漏,在onDestroy()或onDestroyView()中释放MediaPlayer和SeekBar
@Override
protected void onDestroy() {
super.onDestroy();
if (mediaPlayer != null) {
mediaPlayer.release();
mediaPlayer = null;
}
}
@Override
public void onDestroyView() {
super.onDestroyView();
if (mediaPlayer != null) {
mediaPlayer.release();
mediaPlayer = null;
}
}
step7:编写一个辅助方法formatTime将毫秒转换为分钟和秒钟的格式
private String formatTime(int duration) {
int seconds = duration / 1000;
int minutes = seconds / 60;
seconds = seconds % 60;
return String.format("%02d:%02d", minutes, seconds);
}