可能是因为Android 11中已经更改了网络连接权限的处理方式,因此导致Webrtc VOIP呼叫无法正常工作。为解决这个问题,可以尝试加入以下代码:
//在AndroidManifest.xml文件中添加以下权限请求
//在代码中使用以下代码配置Webrtc客户端
PeerConnectionFactory.initialize(PeerConnectionFactory.InitializationOptions.builder(this)
.createInitializationOptions());
PeerConnectionFactory.Options options = new PeerConnectionFactory.Options();
DefaultVideoEncoderFactory defaultVideoEncoderFactory = new DefaultVideoEncoderFactory(
rootEglBase.getEglBaseContext(), true /* enableIntelVp8Encoder */, true);
DefaultVideoDecoderFactory defaultVideoDecoderFactory = new DefaultVideoDecoderFactory(
rootEglBase.getEglBaseContext());
PeerConnectionFactory peerConnectionFactory = PeerConnectionFactory.builder()
.setOptions(options)
.setVideoEncoderFactory(defaultVideoEncoderFactory)
.setVideoDecoderFactory(defaultVideoDecoderFactory)
.createPeerConnectionFactory();
//配置STUN和TURN服务器
List
iceServers.add(PeerConnection.IceServer.builder("stun:stun.l.google.com:19302").createIceServer());
iceServers.add(PeerConnection.IceServer.builder("turn:turn.example.org").setUsername("username").setPassword("password").createIceServer());
PeerConnectionFactory.Options rtcConfig = new PeerConnectionFactory.Options();
rtcConfig.setIceServerUrls(Collections.singletonList("stun:stun.l.google.com:19302"));
rtcConfig.setIceServers(iceServers);
PeerConnectionFactory.initialize(PeerConnectionFactory.InitializationOptions.builder(this).setPeerConnectionFactoryOptions(rtcConfig).createInitializationOptions());
//创建PeerConnection
PeerConnectionFactory.Options rtcConfig = new PeerConnectionFactory.Options();
rtcConfig.setIceServerUrls(Collections.singletonList("stun:stun.l.google