6

インターネット ストリームを再生するメディア プレーヤー サービスがありますが、xml でバッファリングの割合を表示する方法に問題があります。静的な長い番号。これが私のプレーヤー サービスのコードです。

@Override
public void onBufferingUpdate(MediaPlayer mp, int percent) {
    setBufferPosition(percent * getMusicDuration() / 100);
    myMain.EstadoRadio.setText(" Reproductor \n Buffering... ");
}

お分かりのように、EstadoRadio は、ストリームのバッファリング % を表示したい myMain アクティビティから動作している xml のテキスト ビューです。ご協力いただきありがとうございます。

編集: onBufferingUpdate(MediaPlayer mp, int percent) の「パーセント」が使用されるほとんどの場合、次のようなものを見てきました。

myMain.EstadoRadio.setText(" Reproductor \n" + percent + "%");

しかし、私の場合、パーセントは常に-2147483648です。なぜ、またはなぜ変更または更新されないのかわかりません。ここに私のログ猫から少しあります:

05-17 13:34:37.005: V/MediaPlayer(25382): message received msg=3, ext1=-2147483648, ext2=0
05-17 13:34:37.005: V/MediaPlayer(25382): buffering -2147483648
05-17 13:34:37.005: V/MediaPlayer(25382): callback application
05-17 13:34:37.005: V/MediaPlayer(25382): getDuration
05-17 13:34:37.015: V/MediaPlayer(25382): back from callback
05-17 13:34:38.016: V/MediaPlayer(25382): message received msg=3, ext1=-2147483648, ext2=0
05-17 13:34:38.016: V/MediaPlayer(25382): buffering -2147483648
05-17 13:34:38.016: V/MediaPlayer(25382): callback application
05-17 13:34:38.016: V/MediaPlayer(25382): getDuration
05-17 13:34:38.016: V/MediaPlayer(25382): back from callback
4

1 に答える 1

3

表示されている数値は、符号付き32ビット整数の最小値です。私は推測して、Androidはパーセンテージを返すことができず、実際にはゴミ箱のデータを提供していると言います。

インターネットストリームをリモートのmp3URLに置き換えて、バッファリングが実際の値を取り戻すかどうかを確認します(これにより、コードの残りの部分が原因ではないことが確認されます)。

編集:OnBufferingUpdateListenerに関するAndroidのドキュメントでは、無限のインターネットストリームではなく、プログレッシブhttpダウンロードの使用例について説明しています。

Androidに組み込まれているリスナーを使用して、バッファリングのパーセンテージを表示する機能が利用できるとは思いません。Androidソースをクラックして開いて、MediaPlayerクラスがストリームの再生を開始することを決定した時点を見つけることなく(そして、コールバックを提供する場合でも)、この質問が解決されるとは思えません。

ただし、誰かが提供できる場合は、解決策/回避策に興味があります。

http://en.wikipedia.org/wiki/Integer_(computer_science

http://developer.android.com/reference/android/media/MediaPlayer.OnBufferingUpdateListener.html

于 2013-01-07T09:08:30.023 に答える