我可以使用基本HTTP认证与Android的MediaPlayer?(Can I use Basic

2019-08-01 03:26发布

我不能找到一种方法,使用要求基本身份验证的URL时,即时通讯期运用mp.setDataSource(URL);

MediaPlayer mp = new MediaPlayer();    
mp.setDataSource(url);
mp.prepareAsync();

任何人有什么想法?

Answer 1:

这为我工作:

    public void setupMediaPlayer(){

    // Setup Media Player and Prepare to Play
    media = new MediaPlayer();
    media.setAudioStreamType(AudioManager.STREAM_MUSIC);

    // Authdata
    String username = "username";
    String password = "password";

    // encrypt Authdata
    byte[] toEncrypt = (username + ":" + password).getBytes();
    String encoded = Base64.encodeToString(toEncrypt, Base64.DEFAULT);

    // create header
    Map<String, String> headers = new HashMap<>();
    headers.put("Authorization","Basic "+encoded);

    Uri uri = Uri.parse("http://your.full.url:port");

    try {
        media.setDataSource(this,uri,headers);
    } catch (IOException e) {
        Log.e(TAG,"Exception "+e.getMessage());
    }

    media.prepareAsync();

    media.setOnPreparedListener(new MediaPlayer.OnPreparedListener() {
        public void onPrepared(MediaPlayer mp) {
            mp.start();
        }
    });
}


Answer 2:

我不认为本地媒体播放器支持这一点。



Answer 3:

您是否尝试过把用户ID和密码的网址是什么?

http://<user>:<password>@<host>:<port>/<url-path>


Answer 4:

你可以下载高速缓存上的MP3和发挥它,这里是一个post http://almondmendoza.com/2010/03/11/play-mediaplayer-with-authentication-on-android/



Answer 5:

可以传递的HTTP标头,包括基本认证报头,在MediaPlayer的使用下面的方法,这是在API的Android水平14和上述可用的请求。

http://developer.android.com/reference/android/media/MediaPlayer.html#setDataSource(android.content.Context%2C%20android.net.Uri%2C%20java.util.Map%3Cjava.lang.String% 2C%20java.lang.String%3E )



文章来源: Can I use Basic HTTP Authentication with Android MediaPlayer?