2016-12-09 21 views
0

プレーヤーを再生した後にバッファリングせずにオンラインラジオをストリーミングする方法。それは、ラジオの演奏を続けるために数秒間バッファリングする必要がありますが、数秒間停止して再生します。オンラインラジオをストリーミングでストリーミングせずにストリーミングする方法はありますか?

私のAyncタスク: クラスAsyncTask { プライベートProgressDialogの進行を拡張します。

@Override 
    protected Boolean doInBackground(String... params) { 
     // TODO Auto-generated method stub 
     Boolean prepared; 
     try { 

      mediaPlayer.setDataSource(params[0]); 




      mediaPlayer.setOnCompletionListener(new MediaPlayer.OnCompletionListener() { 

       @Override 
       public void onCompletion(MediaPlayer mp) { 
        // TODO Auto-generated method stub 
        intialStage = true; 
        playPause = false; 
        control.setBackgroundResource(R.drawable.play); 
        mediaPlayer.stop(); 
        mediaPlayer.reset(); 
       } 
      }); 
      mediaPlayer.prepare(); 
      prepared = true; 
     } catch (IllegalArgumentException e) { 
      // TODO Auto-generated catch block 
      Log.d("IllegarArgument", e.getMessage()); 
      prepared = false; 
      e.printStackTrace(); 
     } catch (SecurityException e) { 
      // TODO Auto-generated catch block 
      prepared = false; 
      e.printStackTrace(); 
     } catch (IllegalStateException e) { 
      // TODO Auto-generated catch block 
      prepared = false; 
      e.printStackTrace(); 
     } catch (IOException e) { 
      // TODO Auto-generated catch block 
      prepared = false; 
      e.printStackTrace(); 
     } 
     return prepared; 
    } 

    @Override 
    protected void onPostExecute(Boolean result) { 
     // TODO Auto-generated method stub 
     super.onPostExecute(result); 
     if (progress.isShowing()) { 
      progress.cancel(); 
     } 
     Log.d("Prepared", "//" + result); 
     mediaPlayer.start(); 
     media.stop(); 

     intialStage = false; 
    } 

    public Player() { 
     progress = new ProgressDialog(MainActivity.this); 
    } 

    @Override 
    protected void onPreExecute() { 
     // TODO Auto-generated method stub 
     super.onPreExecute(); 
     this.progress.setMessage("Buffering..."); 
     media.start(); 
    } 
} 
public void mute1(View v){ 
    speaker.setVisibility(View.VISIBLE); 
    mute.setVisibility(View.INVISIBLE); 
    mediaPlayer.setVolume(0,0); 
    media.setVolume(0,0); 
    seekbar.setClickable(false); 
    seekbar.setFocusable(false); 
    seekbar.setEnabled(false); 

} 
public void speaker1(View v){ 
    speaker.setVisibility(View.INVISIBLE); 
    mute.setVisibility(View.VISIBLE); 
    mediaPlayer.setVolume(1,1); 
    media.setVolume(1,1); 
    seekbar.setClickable(true); 
    seekbar.setFocusable(true); 
    seekbar.setEnabled(true); 

} 

プレイヤーの開始後にストリーミングせずにオンラインラジオの準備をする方法を教えてください。

私を助けてください..

私のソースは次のとおりです。

 if (playPause) { 
      control.setBackgroundResource(R.drawable.play); 
      mediaPlayer.stop(); 
      new Player().cancel(true); 
      media.stop(); 
      media.reset(); 
      mediaPlayer.reset(); 
      if (mediaPlayer.isPlaying()) 
       mediaPlayer.stop(); 
      mediaPlayer.reset(); 
      media.stop(); 

      playPause = false; 
     } else { 
      control.setBackgroundResource(R.drawable.pause); 
      if (intialStage) { 
       new Player() 
         .execute("http://streaming.shoutcast.com/MUKILFMRADIO"); 
      } else { 
       if (!mediaPlayer.isPlaying()) 
        mediaPlayer.start(); 

       } 
      } 
      playPause = true; 
     } 
}; 

答えて

0

私はplayer.ExoPlayerは、Android用アプリケーションレベルのメディアプレーヤーであるメディアよりもExoplayerを使用することをお勧めします。これは、ローカルとインターネットの両方でオーディオとビデオを再生するためのAndroidのMediaPlayer APIに代わるものです。 ExoPlayerは、DASHやSmoothStreamingアダプティブ再生など、現在AndroidのMediaPlayer APIでサポートされていない機能をサポートしています。 ExoPlayerは、MediaPlayer APIとは異なり、カスタマイズや拡張が容易で、Playストアのアプリケーションアップデートを通じて更新することができます。このリンクをクリックすると、Exoplayerに関するより良いアイデアが得られます。

https://developer.android.com/guide/topics/media/exoplayer.html

https://github.com/google/ExoPlayer

+0

それは良いですが、私は私の問題のために正確な答えをしたいです。 –

+0

私はバッファリングせずに自分のオンラインラジオを再生したいです。私がExoPlayerに自分のメディアプレイヤーを変更した場合、私のミニAPIレベルは19です。 –

関連する問題