Android MediaPlayer:如何在缓冲音频时显示进度对话框 [英] Android MediaPlayer : How do i show a progress dialog while buffering audio

查看:778
本文介绍了Android MediaPlayer:如何在缓冲音频时显示进度对话框的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我正在尝试从url播放mp3音频.但是当网络速度较慢时,播放器似乎在缓冲时没有响应.所以我需要在缓冲时添加一个进度对话框.是否有可能.?如果是的话,有人可以帮助我吗?

Im trying to play an mp3 audio from url. But when having slow network, player seems like not responding while buffering. So i need to add a progress dialog while buffering . Is it possible.? if yes can anyone help me to do.?

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);
            }
        });
    }
}

推荐答案

您可以显示搜索栏,例如:

You can show a seekbar, something like :

// 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);
    }

}); 

希望这会有所帮助!

这篇关于Android MediaPlayer:如何在缓冲音频时显示进度对话框的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆