当我使用mp.setDataSource(url)时,我找不到使用需要基本身份验证的网址的方法;
MediaPlayer mp = new MediaPlayer();
mp.setDataSource(url);
mp.prepareAsync();
任何有想法的人?
答案 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级及更高级别中使用。