Autore Topic: Riproduzione Radio streaming  (Letto 483 volte)

Offline arcaik

  • Nuovo arrivato
  • *
  • Post: 10
  • Respect: 0
    • Mostra profilo
Riproduzione Radio streaming
« il: 30 Settembre 2014, 16:43:51 CEST »
0
Sto scrivendo un app per una web radio gestita da alcuni amici.
Trasmettendo da diversi luoghi, durante il passaggio di linea da un pc ad un altro,il server non trasmette nulla, a causa di ciò il player perde il segnale e non si riaggancia automaticamente al server, l'unica maniera per farlo ripartire è di stoppare e riavviare il player tramite il pulsante play/stop.
Come posso risolvere questo problema ?
QUesto è il codice del player.

Codice (Java): [Seleziona]
public class MediaPlayerRadio extends Service implements MediaPlayer.OnPreparedListener{
       
       

        MediaPlayer lettoreRadio=null;
       
    boolean richiestaAudio=false;
   
    AudioManager audioManager;  
   
    String RADIOSTILE_URL="URL RADIO";  
         
    boolean playing=false;
   
    String data;
   
    IcyStreamMeta icy;
   
    Timer timer;
   
        static String ACTION="MY_ACTION";
       
    NotificationManager mNotificationManager;


 
        @Override
        public IBinder onBind(Intent intent) {
               
                return null;
        }      
       
        public int onStartCommand(Intent intent, int flags, int startId) {     
               
                Log.d("Lettore Radio","Lettore Radio inizializzato");
               
                inizMediaPlayer();             
                               
                return START_STICKY;
               
        }
       
                        //Metodo richiamato una volta che il mediaplayer è inizializzato
        public void onPrepared(MediaPlayer mediaplayer) {
               
                requestAudioFocus();
               
                lettoreRadio.start();          
               
                MyThread myThread = new MyThread();
                 
                myThread.start();
               
                Log.d("Lettore Radio","Lettore Radio partito");
                                               
        }
                @Override
                public void onDestroy(){
                       
                        stopTimer();
                       
                        mediaPlayerStop();                                     
                       
                        Log.d("Lettore Radio", "Lettore radio distrutto");
                                               
                }        
   
       
        public void mediaPlayerStop(){  //Stop del service audio
               
                if((lettoreRadio!=null) ||(lettoreRadio.isPlaying()))  
                       
                        {
                       
                                audioManager.abandonAudioFocus(mAudioFocusListener);
                 
                                lettoreRadio.release();
                 
                                lettoreRadio=null;             
                               
                                stopTimer();
                                                 
                        }
               
                                       
                }
       
        public void inizMediaPlayer(){          //Inizializzazione del Player
               
                lettoreRadio=new MediaPlayer();
               
                lettoreRadio.setOnPreparedListener(this);
               
                lettoreRadio.setAudioStreamType(AudioManager.STREAM_MUSIC);
               
                try {
                       
                        lettoreRadio.setDataSource(getApplicationContext(), Uri.parse(RADIOSTILE_URL));
           
                        } catch (IllegalArgumentException e) {
                               
                                e.printStackTrace();
                               
                                Log.d("MEDIAPLAYER ERRORE 1 ",e.getMessage());
                               
                        } catch (SecurityException e) {
                               
                                e.printStackTrace();
                               
                                Log.d("MEDIAPLAYER ERRORE 2 ",e.getMessage());

                        } catch (IllegalStateException e) {
                               
                                e.printStackTrace();
                               
                                Log.d("MEDIAPLAYER ERRORE 3 ",e.getMessage());

                        } catch (IOException e) {
                               

                                e.printStackTrace();
                               
                                Log.d("MEDIAPLAYER ERRORE 4 ",e.getMessage());

                        }
               
                lettoreRadio.prepareAsync();           
               
    }
                        //Gestione del focus per l'audio
        private OnAudioFocusChangeListener mAudioFocusListener = new OnAudioFocusChangeListener() {
               
                @Override      
                public void onAudioFocusChange(int focusChange) {

            switch (focusChange) {
           
                case AudioManager.AUDIOFOCUS_GAIN:
                                                       
                             lettoreRadio.start();
                             
                    break;

                case AudioManager.AUDIOFOCUS_LOSS:                                                 

                        audioManager.abandonAudioFocus(mAudioFocusListener);  
                   
                    lettoreRadio.stop();

                    break;
                   
                case AudioManager.AUDIOFOCUS_LOSS_TRANSIENT:
                       
                       
                        lettoreRadio.pause();
                   
                    break;

                case AudioManager.AUDIOFOCUS_LOSS_TRANSIENT_CAN_DUCK:
                       
                       
                        lettoreRadio.setVolume(0.1f, 1.0f);
                   
                    break;
                   
                default:break;
            }
        }
        };     

        public void  requestAudioFocus(){
               
                audioManager=(AudioManager)getSystemService(Context.AUDIO_SERVICE);
               
                int result=audioManager.requestAudioFocus(mAudioFocusListener, AudioManager.STREAM_MUSIC,AudioManager.AUDIOFOCUS_GAIN);
                       
                        if(result==AudioManager.AUDIOFOCUS_REQUEST_GRANTED){
                               
                                richiestaAudio=true;
                               
                        }
                        else
                               
                                if(result==AudioManager.AUDIOFOCUS_REQUEST_FAILED){
                                       
                                richiestaAudio=false;
                        }
               
               
                }

public class MyThread extends Thread{ // Metodo per recuperare i dati della canzone
               
                @Override
               
                 public void run() {
                       
                        timer = new Timer();
               
                timer.schedule(new TimerTask()
               
                {
                    public void run()
                    {
                        try
                       
                        {                              
                               
                                 icy   = new IcyStreamMeta(new URL(RADIOSTILE_URL));
                                                 
                         Log.d("CONTROLLO TITOLO STREAMING",icy.getStreamTitle());
                         
                         Log.d("CONTROLLO TITOLO CANZONE",icy.getTitle());                       
                         
                         data=icy.getStreamTitle();
                         
                         Intent intent = new Intent();
                         
                         intent.setAction(ACTION);
                       
                         intent.putExtra("TITOLO",data);
                       
                         sendBroadcast(intent);
                         
                        }
                       
                        catch (MalformedURLException e)
                       
                        {
                            e.printStackTrace();
                           
                            Log.d("METADATA ERRORE 1",e.getMessage());
                        }
                       
                        catch (IOException e)
                       
                        {
                            e.printStackTrace();
                           
                            Log.d("METADATA ERRORE 2",e.getMessage());
                        }
                   
                   
                    } },0,3000);
            }
        }


                public void stopTimer(){ //metodo per stoppare il timer
                                       
                        timer.cancel();
                       
                        timer.purge();
                       
                        Log.d("TIMER","TIMER CANCELLATO");
                }
                       
               
}


Offline lillogoal

  • Utente normale
  • ***
  • Post: 167
  • Respect: +4
    • Google+
    • lillosogliani
    • Mostra profilo
    • LilloNet
  • Dispositivo Android:
    Galaxy s3, Nexus 7,galaxy s advance,galaxy scl
  • Play Store ID:
    Lillonet Inc.
  • Sistema operativo:
    Windows 8,7 & Kali-Linux
Re:Riproduzione Radio streaming
« Risposta #1 il: 02 Ottobre 2014, 23:21:35 CEST »
0
Prova con un timeout al server, così allo scadere (dedici tu il tempo), prova la riconnessone per un tot di volte o anche n volte.
Chi non progetta la sicurezza , programma il fallimento! K.M

Offline arcaik

  • Nuovo arrivato
  • *
  • Post: 10
  • Respect: 0
    • Mostra profilo
Re:Riproduzione Radio streaming
« Risposta #2 il: 08 Ottobre 2014, 17:38:36 CEST »
0
Come lo implemento ?