我可以在Android MediaPlayer上使用基本HTTP身份验证吗?

时间:2009-08-13 07:47:57

标签: android http authentication media-player

当我使用mp.setDataSource(url)时,我找不到使用需要基本身份验证的网址的方法;

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

任何有想法的人?

5 个答案:

答案 0 :(得分:4)

这对我有用:

    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();
        }
    });
}

答案 1 :(得分:2)

我认为原生媒体播放器不支持此功能。

答案 2 :(得分:1)

您是否尝试过将用户ID和密码放入网址?

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

答案 3 :(得分:0)

你可以在缓存上下载mp3并播放它,这是一篇帖子 http://almondmendoza.com/2010/03/11/play-mediaplayer-with-authentication-on-android/

答案 4 :(得分:0)

您可以使用以下方法在MediaPlayer请求中传递HTTP标头(包括基本身份验证标头),该方法可在Android API 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