Android - 如何判断 MediaPlayer 何时缓冲

标签 android media-player buffering

我必须在这里遗漏一些明显的东西,但我似乎找不到任何东西可以让我确定 MediaPlayer 何时缓冲音频。我正在流式传输互联网音频,我想显示一个缓冲指示器,但我尝试过的任何方法都无法让我知道 MediaPlayer 何时中断音频以进行缓冲,因此我无法正确显示缓冲指示器。有什么线索吗?

最佳答案

如下(API 级别 ≥ 9):

mp.setOnInfoListener(new OnInfoListener() {

    @Override
    public boolean onInfo(MediaPlayer mp, int what, int extra) {
        switch (what) {
            case MediaPlayer.MEDIA_INFO_BUFFERING_START:
                loadingDialog.setVisibility(View.VISIBLE);
                break;
            case MediaPlayer.MEDIA_INFO_BUFFERING_END:
                loadingDialog.setVisibility(View.GONE);
                break;
        }
        return false;
    }
});

注意:Android 中有一个已知错误。播放 HLS 流时,它永远不会调用 OnInfoListener 或 OnBuffering。检查此链接OnInfoListener bug

关于Android - 如何判断 MediaPlayer 何时缓冲,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4465494/

相关文章:

android - 如何在 Android 应用程序中显示可视化

flash - YouTube风格在Flash中 throttle

c# - WPF 更新的 Progress<T> 缓冲

android - 用户注销时删除我的应用程序的所有 sharedPreferences

android - 设置在 Android MediaPlayer 中播放的歌曲的音调

android - Android O 中的 NotificationChannel 问题

android - 当 MediaPlayer 在不同的位置播放时,如何从只读的 RandomAccessFile 中读取

iphone - 使用缓冲/流媒体 block 播放远程 mp3 文件

android - 如何使用机器学习和神经网络快速构建图像识别应用程序原型(prototype)?

android - 华为 map 套件 - 在 getMapAsync() 之后未调用 onMapReady()