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

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

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

Solutions Collecting From Web of "Онлайн-приложение для потокового радио для Android"

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

В 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):

 <?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:orientation="vertical" android:layout_width="fill_parent" android:layout_height="fill_parent"> <TextView android:layout_width="fill_parent" android:layout_height="wrap_content" android:text="Source: (Radio La Chevere)" android:layout_marginTop="10dip" android:gravity="center" /> <ProgressBar android:id="@+id/progressBar1" android:indeterminateOnly="false" android:progressDrawable="@android:drawable/progress_horizontal" android:indeterminateDrawable="@android:drawable/progress_indeterminate_horizontal" android:minHeight="20dip" android:maxHeight="20dip" android:layout_width="fill_parent" android:layout_height="wrap_content" android:layout_marginLeft="20dip" android:layout_marginRight="20dip" android:layout_marginTop="10dip"></ProgressBar> <LinearLayout android:id="@+id/linearLayout1" android:layout_height="wrap_content" android:layout_width="match_parent" android:layout_marginTop="20dip" android:gravity="center"> <Button android:text="Play" android:id="@+id/buttonPlay" android:layout_width="wrap_content" android:layout_height="wrap_content"></Button> <Button android:text="Stop" android:id="@+id/buttonStopPlay" android:layout_width="wrap_content" android:layout_height="wrap_content"></Button> </LinearLayout> </LinearLayout> 

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

 <?xml version="1.0" encoding="utf-8"?> <manifest xmlns:android="http://schemas.android.com/apk/res/android" package="package.your.RadioStream" android:versionCode="1" android:versionName="1.0"> <uses-sdk android:minSdkVersion="8" /> <uses-permission android:name="android.permission.INTERNET"></uses-permission> <application android:icon="@drawable/icon" android:label="@string/app_name"> <activity android:name=".myMain" android:label="@string/app_name"> <intent-filter> <action android:name="android.intent.action.MAIN" /> <category android:name="android.intent.category.LAUNCHER" /> </intent-filter> </activity> </application> ? <?xml version="1.0" encoding="utf-8"?> <manifest xmlns:android="http://schemas.android.com/apk/res/android" package="package.your.RadioStream" android:versionCode="1" android:versionName="1.0"> <uses-sdk android:minSdkVersion="8" /> <uses-permission android:name="android.permission.INTERNET"></uses-permission> <application android:icon="@drawable/icon" android:label="@string/app_name"> <activity android:name=".myMain" android:label="@string/app_name"> <intent-filter> <action android:name="android.intent.action.MAIN" /> <category android:name="android.intent.category.LAUNCHER" /> </intent-filter> </activity> </application> 

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

В 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 добавьте разрешение для Интернета.

 <uses-permission android:name="android.permission.INTERNET"></uses-permission>