2017-07-26 2 views
0

J'essaie d'intégrer une diffusion radio dans mon application, mais cela ne fonctionne pas et je ne sais pas pourquoi. Ceci est le lien de ma web radio: https://www.radioking.com/widgets/player/player.php?id=480&c=%23f39c12&ii=&p=1&pp=1&i=1&eq=1&po=1&t=1&a=1&f=bigComment créer une diffusion radio en Android

Pouvez-vous m'aider? Ceci est mon code:

public class MainActivity extends AppCompatActivity { 

    private Button btn; 
    private boolean playPause; 
    private MediaPlayer mediaPlayer; 
    private ProgressDialog progressDialog; 
    private boolean initialStage = true; 

    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_main); 
     btn = (Button) findViewById(R.id.audioStreamBtn); 
     mediaPlayer = new MediaPlayer(); 
     mediaPlayer.setAudioStreamType(AudioManager.STREAM_MUSIC); 
     progressDialog = new ProgressDialog(this); 
     btn.setOnClickListener(new View.OnClickListener() { 
      @Override 
      public void onClick(View view) { 
       if (!playPause) { 
        btn.setText("Pause Streaming"); 

        if (initialStage) { 
         new Player().execute("https://www.radioking.com/widgets/player/player.php?id=480&c=%23f39c12&ii=&p=1&pp=1&i=1&eq=1&po=1&t=1&a=1&f=big"); 
        } else { 
         if (!mediaPlayer.isPlaying()) 
          mediaPlayer.start(); 
        } 

        playPause = true; 

       } else { 
        btn.setText("Launch Streaming"); 

        if (mediaPlayer.isPlaying()) { 
         mediaPlayer.pause(); 
        } 

        playPause = false; 
       } 
      } 
     }); 
    } 

    @Override 
    protected void onPause() { 
     super.onPause(); 

     if (mediaPlayer != null) { 
      mediaPlayer.reset(); 
      mediaPlayer.release(); 
      mediaPlayer = null; 
     } 
    } 

    class Player extends AsyncTask<String, Void, Boolean> { 
     @Override 
     protected Boolean doInBackground(String... strings) { 
      Boolean prepared = false; 

      try { 
       mediaPlayer.setDataSource(strings[0]); 
       mediaPlayer.setOnCompletionListener(new MediaPlayer.OnCompletionListener() { 
        @Override 
        public void onCompletion(MediaPlayer mediaPlayer) { 
         initialStage = true; 
         playPause = false; 
         btn.setText("Launch Streaming"); 
         mediaPlayer.stop(); 
         mediaPlayer.reset(); 
        } 
       }); 

       mediaPlayer.prepare(); 
       prepared = true; 

      } catch (Exception e) { 
       Log.e("MyAudioStreamingApp", e.getMessage()); 
       prepared = false; 
      } 

      return prepared; 
     } 

     @Override 
     protected void onPostExecute(Boolean aBoolean) { 
      super.onPostExecute(aBoolean); 

      if (progressDialog.isShowing()) { 
       progressDialog.cancel(); 
      } 

      mediaPlayer.start(); 
      initialStage = false; 
     } 

     @Override 
     protected void onPreExecute() { 
      super.onPreExecute(); 

      progressDialog.setMessage("Buffering..."); 
      progressDialog.show(); 
     } 
    } 
} 
+0

S'il vous plaît ne pas utiliser toutes les capsules dans le titre, il est considéré comme le même que YELLING chez nous. – jmoerdyk

Répondre

0

Vous pouvez utiliser exoplayer2 mais vous devez utiliser le lien direct vers le flux et non le lien php du répertoire radio. Bonne chance.

0

Essayez ExoPlayer qui prend en charge des fonctionnalités telles que le streaming adaptatif dynamique sur HTTP (DASH), SmoothStreaming et de cryptage commune, qui ne sont pas pris en charge par MediaPlayer. Il est conçu pour être facile à personnaliser et à étendre. Voici le lien https://developer.android.com/guide/topics/media/exoplayer.html