Recibir información de un flujo de ShoutCast en Android

Actualmente estoy haciendo una aplicación para ir con mi sitio de radio en línea, estoy codificándolo con Android 2.2 (API 8) y tengo la Shoutcast Stream trabajando con dos botones.

Aquí está el código de mi clase principal:

public class GrooveOfMusicRadioActivity extends Activity { /** Called when the activity is first created. */ MediaPlayer mediaPlayer; Button start, stop; @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); start = (Button) findViewById(R.id.button1); stop = (Button) findViewById(R.id.button2); start.setOnClickListener(new View.OnClickListener() { public void onClick(View v) { // TODO Auto-generated method stub mediaPlayer.start(); } }); stop.setOnClickListener(new View.OnClickListener() { public void onClick(View v) { // TODO Auto-generated method stub mediaPlayer.pause(); } }); String url = "http://67.212.165.106:8161"; // your URL here mediaPlayer = new MediaPlayer(); mediaPlayer.setAudioStreamType(AudioManager.STREAM_MUSIC); mediaPlayer.setAudioStreamType(AudioManager.STREAM_NOTIFICATION); try { mediaPlayer.setDataSource(url); } catch (IllegalArgumentException e) { // TODO Auto-generated catch block e.printStackTrace(); } catch (IllegalStateException e) { // TODO Auto-generated catch block e.printStackTrace(); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } try { mediaPlayer.prepare(); } catch (IllegalStateException e) { // TODO Auto-generated catch block e.printStackTrace(); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } } } 

Así que me preguntaba cómo recibir el título de la secuencia, canción, artista, etc. y hacer que aparezca

El XML principal está en un diseño relativo

Gracias, soy un noob total cuando se trata de la programación.

Gracias marca

Sólo tenía que obtener los datos de metadatos yo, básicamente, hizo las mismas cosas de: Pulling Track Info de una secuencia de audio con PHP . Una gran cantidad de datos está en los encabezados por lo que puede utilizar esos, pero todo lo que quería era el Título Stream, así que eso es lo que tengo.

 Activity mainAct = this; public void getNowPlaying(View v) { Log.w("getNowPlaying", "fired"); new Thread(new Runnable() { public void run() { String title = null, djName = null; try { URL updateURL = new URL(YOUR_STREAM_URL_HERE); URLConnection conn = updateURL.openConnection(); conn.setRequestProperty("Icy-MetaData", "1"); int interval = Integer.valueOf(conn.getHeaderField("icy-metaint")); // You can get more headers if you wish. There is other useful data. InputStream is = conn.getInputStream(); int skipped = 0; while (skipped < interval) { skipped += is.skip(interval - skipped); } int metadataLength = is.read() * 16; int bytesRead = 0; int offset = 0; byte[] bytes = new byte[metadataLength]; while (bytesRead < metadataLength && bytesRead != -1) { bytesRead = is.read(bytes, offset, metadataLength); offset = bytesRead; } String metaData = new String(bytes).trim(); title = metaData.substring(metaData.indexOf("StreamTitle='") + 13, metaData.indexOf(" / ", metaData.indexOf("StreamTitle='"))).trim(); djName = metaData.substring(metaData.indexOf(" / ", metaData.indexOf("StreamTitle='")) + 3, metaData.indexOf("';", metaData.indexOf("StreamTitle='"))).trim(); Log.w("metadata", metaData); is.close(); } catch (MalformedURLException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); } final String titleFin = title; final String djNameFin = djName; mainAct.runOnUiThread(new Runnable() { public void run() { Toast.makeText(mainAct, titleFin + "\n" + djNameFin, Toast.LENGTH_SHORT).show(); } }); } }).start(); } 

Lo que está utilizando para reproducir el flujo no tiene conocimiento (y no le importa) de los metadatos. Vas a tener que lidiar con eso por separado.

Vea estas publicaciones para ver algo que puede adaptar fácilmente a Android:

FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.