Android MediaPlayer:internet广播流的缓冲区状态?

Android MediaPlayer:internet广播流的缓冲区状态?,android,android-mediaplayer,buffering,internet-radio,Android,Android Mediaplayer,Buffering,Internet Radio,我正在使用MediaPlayer播放互联网广播流。然而,每次我开始播放流时,缓冲似乎需要大约10秒。我有什么办法可以证明: 什么时候开始玩?例如,GUI中的进度条 播放后的缓冲区状态?(例如,当缓冲器因某种原因耗尽时发出警告) 我尝试使用setOnBufferingUpdateListener(),但据我所知,它只适用于已知持续时间的流。(因此不适用于互联网广播,除非我错了-它没有被触发)实现MediaPlayer.oninfolitener,覆盖方法onInfo您可以通过以下操作控制Media

我正在使用MediaPlayer播放互联网广播流。然而,每次我开始播放流时,缓冲似乎需要大约10秒。我有什么办法可以证明:

  • 什么时候开始玩?例如,GUI中的进度条
  • 播放后的缓冲区状态?(例如,当缓冲器因某种原因耗尽时发出警告)

  • 我尝试使用
    setOnBufferingUpdateListener()
    ,但据我所知,它只适用于已知持续时间的流。(因此不适用于互联网广播,除非我错了-它没有被触发)

    实现MediaPlayer.oninfolitener,覆盖方法onInfo您可以通过以下操作控制MediaPlayer的状态:

    @Override
    public boolean onInfo(MediaPlayer arg0, int what, int extra) {
        Log.i(LOG_TAG, "MediaPlayer INFO code = " + what + " extra=" + extra);
        if (what == MediaPlayer.MEDIA_INFO_BUFFERING_START) {
            Log.d(LOG_TAG, "Start buffering...");
    
        } else if (what == MediaPlayer.MEDIA_INFO_BUFFERING_END) {
            Log.d(LOG_TAG, "End buffering...");
            Log.d(LOG_TAG, "Start playing...");
    
        }
        return false;       
    }
    

    查看其他操作;)

    据我所知,这同样只适用于已知持续时间的媒体。由于我使用了我在服务中为我的无线电应用程序发布的方法,所以我无法理解您为什么这么说!!!!!!那你为什么这么认为呢???这很奇怪,唯一被调用的MediaPlayer回调函数是
    onPrepared()
    。我会调查一下,如果有效的话,我会给你+1。但我仍然想知道是否有任何方法可以确定缓冲了多少(不仅仅是缓冲是否已经开始或完成)。我不知道为什么这是唯一被调用的回调,我向您保证,在我的服务中,每当我从webRadio URL启动流时,都会调用onInfo和onBufferingUpdate。