Когда я нажимаю изображение на экране, оно вызывает powerButton.OnClickListener (), как и положено, и после нескольких секунд буферизации поток воспроизводится просто отлично.Тем не менее, люди хотели бы, чтобы на экране появилось краткое всплывающее окно, чтобы уведомить пользователя «Соединение с радиопотоком, пожалуйста, подождите ...»
Это проблема, независимо от того, что я пробовал и где яЯ поместил строку для создания всплывающего окна с тостами, он просто не будет отображаться до того, как перейдет в буферизацию.
Любая помощь будет принята с благодарностью, и я добавил большую часть кода и предоставлю больше при необходимости.
// run on powerButton click
powerButton.setOnClickListener(new OnClickListener()
{
public void onClick(View view)
{
// check if the player is started or stopped
if (isPlaying) // player is streaming
{
// stop the stream and set isPlaying to false
mediaPlayer.stop();
// release the media player
releaseMediaPlayer();
// update notification
mNotificationManager.cancel(SIMPLE_NOTFICATION_ID);
// set power button to "powered off" image
powerButton.setImageResource(R.drawable.power_off);
}
else // player not streaming
{
// notify the user that the stream is loading
final Toast streamLoading = toast.makeText(getBaseContext(), "Radio Stream Connecting, Please Wait...", Toast.LENGTH_SHORT);
streamLoading.show();
// try catch block to attempt connecting to radioUrl
try
{
// create new instance of media player
mediaPlayer = new MediaPlayer();
// set media player to handle audio streams
mediaPlayer.setAudioStreamType(AudioManager.STREAM_MUSIC);
// connect to radio stream and fill buffer
mediaPlayer.setDataSource(radioUrl);
mediaPlayer.prepare(); // might take long depending on buffering speed
// start the media player and set isPlaying to true
mediaPlayer.start();
isPlaying = true;
// update notification, clear stream message
createNotification();
// set power button to "powered on" image
powerButton.setImageResource(R.drawable.power_on);
}
catch (IllegalArgumentException e) // cannot connect to stream
{
// clear streaming text and notify user of failure
final Toast streamError1 = Toast.makeText(MainMenu.this, "Failed to load: Unable to connect to stream!", Toast.LENGTH_SHORT);
streamError1.show();
// release the media player and display error
releaseMediaPlayer();
mNotificationManager.cancel(SIMPLE_NOTFICATION_ID);
e.printStackTrace();
}
catch (IllegalStateException e) // stream cannot play audio
{
// clear streaming text and notify user of failure
final Toast streamError2 = Toast.makeText(getBaseContext(), "Failed to load: cannot play stream!", Toast.LENGTH_SHORT);
streamError2.show();
// release the media player and display error
releaseMediaPlayer();
mNotificationManager.cancel(SIMPLE_NOTFICATION_ID);
e.printStackTrace();
}
catch (IOException e) // general connection issue
{
// clear streaming text and notify user of failure
final Toast streamError3 = Toast.makeText(getBaseContext(), "Failed to Load: Connection issue!", Toast.LENGTH_SHORT);
streamError3.show();
// release the media player and display error
releaseMediaPlayer();
mNotificationManager.cancel(SIMPLE_NOTFICATION_ID);
e.printStackTrace();
}
}
}
});