一定の時間ではなく、一定量のデータをバッファリングしているように見えます。頭のてっぺんからのさまざまなタイプのNPRストリームのビットレートを知らない人にとって、データは次のようになります。
MPRニュースストリーム:27秒(http://newsstream1.publicradio.org:80/)、64 kbps MPRクラシック音楽ストリーム:15秒(http://classicalstream1.publicradio.org:80/)、128 kbps MPR The Currentストリーム:7秒(http://currentstream1.publicradio.org:80/)、128 kbps PRIストリーム:52秒(http://pri-ice.streamguys.biz/pri1)、32kbps 2つの128kbpsストリームでは、ビットレートとバッファリング期間の間に非常に良好な相関関係があります。
いずれにせよ、Androidはオープンソースであるため、Androidが何をしているのかをいつでも確認できます。残念ながら、prepareAsync()
はprepare()
ネイティブメソッドであり、バッファ関連のイベントもネイティブプロセスからディスパッチされているようです。
にをアタッチして、バッファ状態に関するより詳細な更新を取得しようとOnBufferingUpdateListener
しましたMediaPlayer
か?イベントが配信される速度と、さまざまなストリームの各イベントでバッファーが何パーセント満たされるかを比較することは興味深いかもしれません。これをストリームのビットレートと相互参照できます。32kbpsでの4秒間のバッファリングが、128 kbpsでの1秒間のバッファリングと同じ割合でバッファを埋める場合は、答えが見つかったと思います。
ここから派生。