Онлайн-приложение для streamового радио для Android

Я создаю приложение для Android, которое будет передавать несколько радиостанций из Латинской страны, есть 10 станций, которые, как я знаю, могут быть воспроизведены в Android, я получил URL-адрес от них и фактически заставил их работать с помощью этого учебника (ссылка удалена, потому что он мертв), но проблема заключается в том, что он играет в течение нескольких секунд, а затем останавливает загрузку, но не перезапускает streamи, мои вопросы:

  • Если кто-то работал с этим учебным пособием, он может объяснить мне, как заставить stream постоянно останавливаться.
  • Есть ли более простой способ передать радио-звук? этот учебник кажется старым, есть ли новый учебник или новый образец кода для изучения или использования?
  • Может ли кто-нибудь отправить мне правильный путь?

Поэтому я нашел этот образец, и он работает для меня, вот он, если у вас такая же проблема:

в myMain.java

import android.app.Activity; import android.os.Bundle; import java.io.IOException; import android.media.MediaPlayer; import android.media.MediaPlayer.OnBufferingUpdateListener; import android.media.MediaPlayer.OnPreparedListener; import android.util.Log; import android.view.View; import android.view.View.OnClickListener; import android.widget.Button; import android.widget.ProgressBar; public class myMain extends Activity implements OnClickListener { private ProgressBar playSeekBar; private Button buttonPlay; private Button buttonStopPlay; private MediaPlayer player; /** Called when the activity is first created. */ @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); initializeUIElements(); initializeMediaPlayer(); } private void initializeUIElements() { playSeekBar = (ProgressBar) findViewById(R.id.progressBar1); playSeekBar.setMax(100); playSeekBar.setVisibility(View.INVISIBLE); buttonPlay = (Button) findViewById(R.id.buttonPlay); buttonPlay.setOnClickListener(this); buttonStopPlay = (Button) findViewById(R.id.buttonStopPlay); buttonStopPlay.setEnabled(false); buttonStopPlay.setOnClickListener(this); } public void onClick(View v) { if (v == buttonPlay) { startPlaying(); } else if (v == buttonStopPlay) { stopPlaying(); } } private void startPlaying() { buttonStopPlay.setEnabled(true); buttonPlay.setEnabled(false); playSeekBar.setVisibility(View.VISIBLE); player.prepareAsync(); player.setOnPreparedListener(new OnPreparedListener() { public void onPrepared(MediaPlayer mp) { player.start(); } }); } private void stopPlaying() { if (player.isPlaying()) { player.stop(); player.release(); initializeMediaPlayer(); } buttonPlay.setEnabled(true); buttonStopPlay.setEnabled(false); playSeekBar.setVisibility(View.INVISIBLE); } private void initializeMediaPlayer() { player = new MediaPlayer(); try { player.setDataSource("http://usa8-vn.mixstream.net:8138"); } catch (IllegalArgumentException e) { e.printStackTrace(); } catch (IllegalStateException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); } player.setOnBufferingUpdateListener(new OnBufferingUpdateListener() { public void onBufferingUpdate(MediaPlayer mp, int percent) { playSeekBar.setSecondaryProgress(percent); Log.i("Buffering", "" + percent); } }); } @Override protected void onPause() { super.onPause(); if (player.isPlaying()) { player.stop(); } } } 

в коде XML (main.xml):

          

и манифест андроида:

             ?             

Ну, если вы ожидаете индикатор прогресса, вы получаете разочарование, это stream, который по умолчанию не имеет времени для завершения, бесконечен. О URL-адресе вы можете использовать точку монтирования на сервере shoutcast2 / icecast и / в shoutcast1.

В onResume или wrvr вы хотите! Вставьте этот код.

  String url = "http://server2.crearradio.com:8371"; // your URL here final MediaPlayer mediaPlayer = new MediaPlayer(); mediaPlayer.setAudioStreamType(AudioManager.STREAM_MUSIC); try { mediaPlayer.setDataSource(url); } catch (IOException e) { e.printStackTrace(); } try { mediaPlayer.prepare(); // might take long! (for buffering, etc) } catch (IOException e) { e.printStackTrace(); } mediaPlayer.setOnPreparedListener(new MediaPlayer.OnPreparedListener() { public void onPrepared(MediaPlayer mp) { mediaPlayer.start(); } }); 

В manifest.xml добавьте разрешение для Интернета.

  
  • Аутентификация и авторизация Websocket весной
  • Может ли Android SDK работать с JDK 1.7?
  • Как вернуть массив из JNI в Java?
  • Как отключить SSLv3 в android для HttpsUrlConnection?
  • Разница между JSONObject и JSONArray
  • Любые хорошие инструменты ORM для разработки Android?
  • Использование AsyncTask с передачей значения
  • Android: переключение камеры при нажатии кнопки
  • Получение SMS-сообщений в Android-приложении
  • Как я могу сопоставить «корневой» сервлет, чтобы другие скрипты все еще выполнялись?
  • Ошибка соединения Bluetooth "java.io.IOException: чтение не выполнено, сокет может быть закрыт или таймаут, read ret: -1"
  • Interesting Posts

    Динамический заголовок JQuery Mobile 1.4.1

    Функции Firebase: невозможно прочитать свойство user_id неопределенного

    Как сортировать вкладки в отдельные окна firefox на основе имени домена?

    Установка Mac OS X с другим диском

    Рекурсивный реверсивный рекурсивный список

    Скользящий навигационный ящик не обрабатывает клики по пунктам меню android

    Как расширить редактор vim до полного экрана в шпаклере?

    как создать собственный файл со значком, который наследует значок JFrame, который я установил, в java и моем собственном файле используйте FileOutputStream и ObjectOutputStream

    Angular2 – Параметры запроса HTTP-запроса

    Что означает «#» в Scala?

    Как преобразовать VDI-файл VirtualBox в VMware vdmk?

    Pinging localhost против pinging 127.0.0.1

    Как получить мостовую сеть для работы в VirtualBox с гостевой ОС Linux на хосте Mac OS X

    Ограничение доступа: Тип «Приложение» – это не API (ограничение на требуемую библиотеку rt.jar)

    Django rest framework, используйте разные сериализаторы в том же ModelViewSet

    Давайте будем гением компьютера.