2

私はインターネットラジオストリームを操作しようとしていますが、一部のストリームではこれ以外は何も得られません:

05-14 13:16:13.480: E/MediaPlayer(2088): error (1, -2147483648)
05-14 13:16:13.480: W/System.err(2088): java.io.IOException: Prepare failed.: status=0x1
05-14 13:16:13.480: W/System.err(2088):     at android.media.MediaPlayer.prepare(Native Method)
05-14 13:16:13.480: W/System.err(2088):     at com.darko.mk.RadioTresActivity$2.run(RadioTresActivity.java:141)
05-14 13:16:13.480: W/System.err(2088):     at java.lang.Thread.run(Thread.java:1019)

正常に動作しているステーションもあれば、まったく再生していないステーションもあります。

エラーが発生するコードは次のとおりです。

public void playRadio(final String source) {
        new Thread(new Runnable() {

            public void run() {
                try {
                    mediaPlayer.release();
                    mediaPlayer = new MediaPlayer();
                    mediaPlayer.setAudioStreamType(AudioManager.STREAM_MUSIC);
                    mediaPlayer.setDataSource(source);
                    mediaPlayer.prepare(); //line 141 that gives the error
                    mediaPlayer.start();
                } catch (IllegalArgumentException e) {
                    e.printStackTrace();
                } catch (IllegalStateException e) {
                    e.printStackTrace();
                } catch (IOException e) {
                    e.printStackTrace();
                }
            }
        }).start();

    }

何が問題になる可能性がありますか? ソースの例は次のとおりです: http://217.16.69.17:8000/metropolis.mp3

4

2 に答える 2

1

Android ドキュメント

「ストリームの場合、十分なデータがバッファリングされるまでブロックするのではなく、すぐに戻る prepareAsync() を呼び出す必要があります。」

iplayer.setOnPreparedListener(new OnPreparedListener() {
    public void onPrepared(MediaPlayer mp) {
        mp.start();
    }
});
iplayer.prepareAsync();
于 2012-11-04T12:54:02.237 に答える
0

Android メディア プレーヤーを使用してオーディオをストリーミングするには、onPreparedListner コールバックを受信したら、オーディオの再生を開始する必要があります。

于 2014-07-16T18:52:42.613 に答える