Tengo un problema extraño. Utilizo el método prepareAsync con el MediaPlayer
, pero el oyente que he declarado nunca se dispara. Intento transmitir una transmisión en vivo de .mp3
desde Internet (estación de radio). Utilizo un método en línea para el oyente, pero también intenté implementar la interfaz sin ningún éxito. Aquí está una parte de mi código:AndroId MediaPlayer prepareAsync método
En la sección de miembros:
String url = "http://<my_url>.mp3";
MediaPlayer mediaPlayer = new MediaPlayer();
En la Actividad 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();
Entonces, aquí está el preparePlayer()
método:
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();
}
}
Y (sólo para el registro), el onDetroy()
donde hago la limpieza:
private void releaseMediaPlayer() {
if (mediaPlayer != null) {
if(mediaPlayer.isPlaying()) {
mediaPlayer.stop();
}
mediaPlayer.release();
mediaPlayer = null;
}
}
@Override
protected void onDestroy() {
super.onDestroy();
releaseMediaPlayer();
}
¿dice el log algo sobre lo que sucede o hay errores? ¿Tienes permiso para internets? – zapl