【发布时间】:2021-07-14 14:01:29
【问题描述】:
您好,我正在创建一个媒体播放器应用程序,在该应用程序中,我从 Firebase 数据库中以单独的片段检索音频。但是当我切换到那个片段时,它会在开始前冻结 5-10 秒。这太烦人了。所以我将媒体播放器放在一个新线程中,但是我在线程之外使用了媒体播放器,这会导致错误。谢谢...
这是一个代码示例 =>
new Thread(new Runnable() {
@Override
public void run() {
mediaPlayer.setAudioAttributes(
new AudioAttributes
.Builder()
.setContentType(AudioAttributes.CONTENT_TYPE_MUSIC)
.build());
try {
mediaPlayer.setDataSource(audioUrl);
} catch (IOException e) {
e.printStackTrace();
}
try {
mediaPlayer.prepare();
} catch (IOException e) {
e.printStackTrace();
}
runnable = new Runnable() {
@Override
public void run() {
//set progress on seekbar
seekBar.setProgress(mediaPlayer.getCurrentPosition());
//Handle post delay for 0.5 seconds
handler.postDelayed(this, 50);
}
};
}
}).start();
//Get duration of media player
int duration = mediaPlayer.getDuration();
//Convert milliseconds to minutes and seconds
String sDuration = convertFormat(duration);
//Set duration on text view
tv_seekbar_end.setText(sDuration);
play_audio.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
play_audio.setVisibility(View.INVISIBLE);
pause_audio.setVisibility(View.VISIBLE);
if (!mediaPlayer.isPlaying()) {
mediaPlayer.start();
}
//Set max. on seek bar
seekBar.setMax(mediaPlayer.getDuration());
//Start handler
handler.postDelayed(runnable, 0);
}
});
【问题讨论】:
标签: java android xml firebase android-mediaplayer