【Android】记录Android MediaPlayer的两个bug及其它特殊表现
CDN资源设置了防盗链功能,Android客户端这边需要在访问资源时设置约定好的头信息。
一开始是希望使用通用头Referer
,但对于MediaPlayer的话,在 android 4.X 机型上设置Referer
是无效果的….
该Bug在android 5.0才恢复。
见下图:
参考链接:
Nexus 5 referer string value is coming as null even if we pass it
Why VideoView setVideoUri(Uri uri,Headers headers) doesn’t work?
那转而使用User-Agent
吧,但是!!!
在 android 5.0 机子上MediaPlayer将User-Agent
强制设置为stagefright/1.2
了! Shit!!!
见下图:
参考链接:
MediaPlayer ignores User-Agent header
Don’t overwrite user agent header if app specified one
最后,防盗链在CDN端的配置是即使用Referer
也使用User-Agent
两者是或
关系。
2016.12.13记
特殊表现:
VideoView在播放视频文件时,调用的是MediaPlayer.start(),经Charles抓包发现start()后会对url请求两次。
唠叨:
系统自带的MediaPlayer是可用的,但还是毛糙了些。
可以额外关注下其它开源播放器:
Google家的另一个ExoPlayer(GitHub链接)