2011-01-07 8 views
15

Estoy trabajando en la aplicación de Android en la que tengo reproducción de radio en línea. He examinado las clases de reproductor de medios, pero no creo que haya ningún método para transmitir en línea la radio. Si alguien sabe acerca de esto, por favor ayudame.Cómo jugar en línea de radio en Android

Gracias. Vikram

Respuesta

7

Vikram,

Usted debe ser capaz de lograr esto usando el MediaPlayer; sin embargo, dependiendo de su formato, puede ser difícil. Por ejemplo, si intenta reproducir una transmisión de radio en línea que usa .pls o .m3u, debería analizar ese archivo y extraer las URL verdaderas para usar.

Más allá de eso, debería poder usar el método de creación de MediaPlayer con una URL para iniciar la reproducción de transmisión. Tenga en cuenta que si las URL de las rutas redirigen (lo que probablemente ocurra), es posible que tenga que resolver la URL. Una forma simple de hacerlo es usar HttpURLConnection para abrir una conexión, luego connect(), luego getURL(). Probablemente necesites una url de cadena, así que llama a ExternalForm() en el resultado de getURL().

Además, si las cosas no funcionan para usted con MediaPlayer a través de la URL, es posible que tenga que idear su propio mecanismo de almacenamiento en búfer para obtener los datos del servidor. Siendo ese el caso, puede probar este tutorial: http://blog.pocketjourney.com/2008/04/04/tutorial-custom-media-streaming-for-androids-mediaplayer/

+3

¿Puede elaborar más? con algún código, por favor? – iTurki

+1

@brack el enlace que proporciona no funciona ¿Podemos obtener cualquier otro enlace por favor? –

+0

El enlace a blog.pocketjourney.com en respuesta está muerto. – Pang

5

Por lo que he leído, sólo debe ser capaz de hacer:

MediaPlayer mediaPlayer = new MediaPlayer(); 
mediaPlayer.setDataSource(streamingURL); 
mediaPlayer.prepare(); 
mediaPlayer.start(); 

para obtener la funcionalidad básica que creo, pero no he probado yo mismo.

1

la manera más fácil de reproducir un canal de radio en android es usar el MediaPlayer incorporado, sin embargo, cuando el origen de datos es de la web el método prepare() lleva mucho tiempo para ejecutar y debe usar prepareAsync() en su lugar para evitar el bloqueo de la interfaz de usuario:

player = new MediaPlayer(); 
    player.setOnPreparedListener(new MediaPlayer.OnPreparedListener() { 
     @Override 
     public void onPrepared(MediaPlayer mediaPlayer) { 
       player.start(); 
      } 
     } 
    }); 

    try { 
     player.setDataSource(currentChannelUrl); 
     player.setAudioStreamType(AudioManager.STREAM_MUSIC); 
    } catch (IOException e) { 
     Toast.makeText(this, e.getMessage(), Toast.LENGTH_SHORT).show(); 
     e.printStackTrace(); 
     return; 
    } 
    player.prepareAsync(); 
Cuestiones relacionadas