android播放网络音频问题记录
权限
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
<uses-permission android:name="android.permission.INTERNET" />
代码
public static void playOnline(Context context){
// String url = "http://szls.skyinfor.cn:21001/api/public/storage/event/20210420/312d9c5f6e04eacb1155f83e6bd4e935.mp3";
String url = "http://218.205.239.34/MIGUM2.0/v1.0/content/sub/listenSong.do?netType=00©rightId=0&resourceType=2&contentId=600913000002601091&toneFlag=PQ&channel=02";
// MediaPlayer mediaPlayer = MediaPlayer.create(context, Uri.parse(url));
MediaPlayer mediaPlayer = new MediaPlayer();
mediaPlayer.setAudioStreamType(AudioManager.STREAM_MUSIC);
try {
mediaPlayer.setDataSource(context, Uri.parse(url));
} catch (IOException e) {
e.printStackTrace();
}
try {
// mediaPlayer.setOnPreparedListener(new MediaPlayer.OnPreparedListener() {
// @Override
// public void onPrepared(MediaPlayer mp) {
// mp.start();
// }
// });
mediaPlayer.prepare(); // might take long! (for buffering, etc)
mediaPlayer.start();
} catch (Exception e) {
e.printStackTrace();
}
}
http请求设置
很多资源都是http的,但是高版本不允许http,所以需要设置
否则会报错Prepare failed.: status=0x1
xml中新建文件network-security-config.xlm
<?xml version="1.0" encoding="utf-8"?>
<network-security-config>
<base-config cleartextTrafficPermitted="true" />
</network-security-config>
设置xml
<application
android:networkSecurityConfig="@xml/network_security_config"
>