AndroId MediaPlayer prepareAsync méthode

J'ai un problème étrange. J'utilise le prepareAsync méthode avec le MediaPlayer, mais l'auditeur que j'ai déclaré juste n'est jamais déclenché. J'essaie de diffuser un live .mp3 nourrir, de l'Internet (station de radio). J'utilise une méthode inline pour l'auditeur, mais j'ai aussi essayé d'implémenter l'interface sans succès. Voici une partie de mon code :

Dans la section membre :

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

De L'Activité onCreate() :

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();

Alors, voici la preparePlayer() méthode :

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();
    }
}

Et (juste pour le dossier), le onDetroy() où je fais le nettoyage :

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

@Override
protected void onDestroy() {
    super.onDestroy();
    releaseMediaPlayer();
}
le journal dit rien sur ce qui se passe ou il y a des erreurs? Avez-vous la permission de les internets?

OriginalL'auteur Patrice Cote | 2012-04-24