Android MediaPlayer:如何在缓冲音频时显示进度对话框
Android MediaPlayer : How do i show a progress dialog while buffering audio
我正在尝试播放来自 url 的 mp3 音频。但是当网络速度较慢时,播放器在缓冲时似乎没有响应。所以我需要在缓冲时添加一个进度对话框。可能吗。?如果是的话,谁能帮我做。?
public class Player extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_player);
Bundle b = new Bundle();
b = getIntent().getExtras();
final String url = b.getString("audio");
Log.e("URL: ", url);
final MediaPlayer mMediaPlayer = new MediaPlayer();
mMediaPlayer.setAudioStreamType(AudioManager.STREAM_MUSIC);
try {
Log.e("preparing: ", url);
mMediaPlayer.setDataSource(url);
mMediaPlayer.prepareAsync(); // might take long! (for buffering, etc)
} catch (IOException e) {
Toast.makeText(this, "mp3 not found", Toast.LENGTH_SHORT).show();
e.printStackTrace();
}
//mp3 will be started after completion of preparing...
mMediaPlayer.setOnPreparedListener(new MediaPlayer.OnPreparedListener() {
@Override
public void onPrepared(MediaPlayer player) {
int max = player.getDuration();
Log.e("MAX", String.valueOf(max));
player.start();
Log.e("start: ", url);
}
});
}
}
您可以显示搜索栏,例如:
// In your onCreate(), add below at last .......
.
.
.
seekbar.setMax(mMediaPlayer.getDuration());
mMediaPlayer.setOnBufferingUpdateListener(new MediaPlayer.OnBufferingUpdateListener() {
public void onBufferingUpdate(MediaPlayer mp, int percent)
{
double ratio = percent / 100.0;
bufferingLevel = (int)(mp.getDuration() * ratio);
seekBar.setSecondaryProgress(bufferingLevel);
}
});
希望对您有所帮助!
我正在尝试播放来自 url 的 mp3 音频。但是当网络速度较慢时,播放器在缓冲时似乎没有响应。所以我需要在缓冲时添加一个进度对话框。可能吗。?如果是的话,谁能帮我做。?
public class Player extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_player);
Bundle b = new Bundle();
b = getIntent().getExtras();
final String url = b.getString("audio");
Log.e("URL: ", url);
final MediaPlayer mMediaPlayer = new MediaPlayer();
mMediaPlayer.setAudioStreamType(AudioManager.STREAM_MUSIC);
try {
Log.e("preparing: ", url);
mMediaPlayer.setDataSource(url);
mMediaPlayer.prepareAsync(); // might take long! (for buffering, etc)
} catch (IOException e) {
Toast.makeText(this, "mp3 not found", Toast.LENGTH_SHORT).show();
e.printStackTrace();
}
//mp3 will be started after completion of preparing...
mMediaPlayer.setOnPreparedListener(new MediaPlayer.OnPreparedListener() {
@Override
public void onPrepared(MediaPlayer player) {
int max = player.getDuration();
Log.e("MAX", String.valueOf(max));
player.start();
Log.e("start: ", url);
}
});
}
}
您可以显示搜索栏,例如:
// In your onCreate(), add below at last .......
.
.
.
seekbar.setMax(mMediaPlayer.getDuration());
mMediaPlayer.setOnBufferingUpdateListener(new MediaPlayer.OnBufferingUpdateListener() {
public void onBufferingUpdate(MediaPlayer mp, int percent)
{
double ratio = percent / 100.0;
bufferingLevel = (int)(mp.getDuration() * ratio);
seekBar.setSecondaryProgress(bufferingLevel);
}
});
希望对您有所帮助!