问题描述
在使用VideoView播放网络视频(网址为 "http://111.206.133.26:89/video/100100/00000/100100000000000053.mp4")时,显示播放失败,错误码(1, -2147483648)。
查看错误值(1,-2147483648),“1”值对应于MediaPlayer.MEDIA_ERROR_UNKNOWN
中的常量。
-2147483648对应于十六进制0x80000000
,在frameworks / native / include / utils / Errors.h
中定义为UNKNOWN_ERROR
。说明错误的源很难确定,因为它是一个非常通用的返回值,可能是编解码器和兼容性问题,也可能是线程取消或其他原因。
原因
对于本次发现的问题,是由于Android 9.0以上系统默认情况下已停用明文(使用未加密的HTTP协议而不是HTTPS)支持,而播放的网络视频使用了HTTP协议。详情可参见Android开发文档网络安全配置
解决办法
在AndroidManifest.xml中添加android:usesCleartextTraffic="true"
。
<uses-permission android:name="android.permission.INTERNET" />
<!--Android 9.0以上需添加android:usesCleartextTraffic="true"防止意外的非加密连接 -->
<application
android:usesCleartextTraffic="true">
...
</application>