2016-08-04 1 views
0

私はサーバーのURLからMP3オーディオファイルを再生する必要があります。オーディオを再生するには、ヘッダーにCookieを渡す必要があります。だから私はsetDatasource(context、uri、headers)を使ってメディアを再生しました。それは私のために働いていない。ヘッダーとしてクッキーを渡してアンドロイドストリームのオーディオ

エラーが返されます。ソースが-1008のエラーを返しました。ソースに戻った10のリトライが-1008のエラーを返しました。0がリトライされました。

誰でも私の解決策を手助けすることができます。前もって感謝します。

MediaPlayer mediaPlayer; 

Map headers = new HashMap(); 
headers.put("Cookie","CloudFront-Signature=xx; Domain=xx; Path=xx"); 
headers.put("Cookie","CloudFront-Policy:xx; Domain=xx; Path=xx"); 
headers.put("Cookie","CloudFront-Key-Pair-Id=xx; Domain=xx; Path=XX"); 

    mediaPlayer = new MediaPlayer(); 
    mediaPlayer.setAudioStreamType(AudioManager.STREAM_MUSIC); 
    mediaPlayer.setDataSource(MediaPlayerService.this, Uri.parse("URL"),headers); 
    mediaPlayer.prepare(); 
    mediaPlayer.setOnPreparedListener(new MediaPlayer.OnPreparedListener() { 
       @Override 
       public void onPrepared(MediaPlayer mediaPlayer) { 
        mediaPlayer.start(); 
       } 
      }); 

**Following are the links referred:** 
1. http://stackoverflow.com/questions/731603/android-mediaplayer-urls-with-cookie 
2. http://stackoverflow.com/questions/9727098/android-add-cookie-to-mediaplayer-requests 
3. http://stackoverflow.com/questions/2932362/how-to-stream-authenticated-content-with-mediaplayer-on-android 

答えて

0

最後に、このリンク「https://github.com/yixia/VitamioBundle/issues/177#issuecomment-48872226」を参照して解決策を見つけました。私は以下のようにMediaPlayerヘッダーにクッキーを追加することができます。すべての4.0,5.0および6.0アンドロイドバージョンで問題なく再生できます。これが誰かを助けることを望みます。

最後に\ r \ nを追加すると、そのトリックが行われました。上記のフォーラムに感謝します。

Map<String, String> headers = new HashMap<String, String>(); 

headers.put("Cookie","CloudFront-Policy=xxx; CloudFront-Signature=xxx; CloudFront-Key-Pair-Id=xxx; Domain=xx; Path=xxx\r\n");

mediaPlayer = new MediaPlayer(); 
      Uri uri = Uri.parse("url"); 

      mediaPlayer.setAudioStreamType(AudioManager.STREAM_MUSIC); 
      mediaPlayer.setDataSource(context, uri, headers); 
      mediaPlayer.setOnPreparedListener(new MediaPlayer.OnPreparedListener() { 
       @Override 
       public void onPrepared(MediaPlayer mediaPlayer) { 
        mediaPlayer.start(); 
       } 
      }); 
      mediaPlayer.prepare(); 
関連する問題