AndroId MediaPlayer przygotowuje metodę Async

Mam dziwny problem. Używam metody prepareAsync zMediaPlayer, ale słuchacz, którego oświadczyłem, nigdy nie zostanie zwolniony. Próbuję strumieniować na żywo.mp3 kanał z Internetu (stacja radiowa). Używam metody inline dla słuchacza, ale próbowałem również zaimplementować interfejs bez powodzenia. Oto część mojego kodu:

W sekcji członka:

<code>String url = "http://<my_url>.mp3";
MediaPlayer mediaPlayer = new MediaPlayer();
</code>

W działaniuonCreate() :

<code>ToggleButton playButton = (ToggleButton) findViewById(R.id.playToggleButton);
playButton.setOnClickListener(this);
playButton.clearFocus();
playButton.setClickable(false);

mediaPlayer.setOnPreparedListener(new OnPreparedListener() {
    public void onPrepared(MediaPlayer mp) {
        ToggleButton playButton = (ToggleButton) findViewById(R.id.playToggleButton);
        playButton.setClickable(true);
        mp.start();
    }
});

preparePlayer();
</code>

Więc oto jestpreparePlayer() metoda :

<code>private void preparePlayer() {
    if (mediaPlayer == null) {
        mediaPlayer = new MediaPlayer();
    }
    mediaPlayer.setAudioStreamType(AudioManager.STREAM_MUSIC);
    try {
        mediaPlayer.setDataSource(url);
        mediaPlayer.prepareAsync();

    } catch (IllegalArgumentException e) {
        Toast.makeText(
                MyStreamActivity.this,
                getResources().getString(R.string.erreurIllegalArgument),
                Toast.LENGTH_LONG).show();
        e.printStackTrace();
    } catch (IllegalStateException e) {
        Toast.makeText(
                MyStreamActivity.this,
                getResources().getString(R.string.erreurIllegalState),
                Toast.LENGTH_LONG).show();
        e.printStackTrace();
    } catch (IOException e) {
        Toast.makeText(
                MyStreamActivity.this,
                getResources().getString(R.string.erreurIO),
                Toast.LENGTH_LONG).show();
        e.printStackTrace();
    }
}
</code>

I (tylko dla nagrania)onDetroy() gdzie robię sprzątanie:

<code>private void releaseMediaPlayer() {
    if (mediaPlayer != null) {
        if(mediaPlayer.isPlaying()) {
            mediaPlayer.stop();
        }
        mediaPlayer.release();
        mediaPlayer = null;
    }
}

@Override
protected void onDestroy() {
    super.onDestroy();
    releaseMediaPlayer();
}
</code>

questionAnswers(2)

yourAnswerToTheQuestion