二进制前缀:0b,十六进制前缀:0x,八进制前缀:0。
又多了解了一点javaSE的知识,java内部接口默认就是静态的。
先说效果:不管你在哪里,应该都是可以穿透的,加入到123456房间后可以音视频互动。Android端与Web端交互成功之后,两个APP也是可以通的!
一、Android Studio小坑
为了打通Android和浏览器的互通,安装了4年前用的IDE。。。AS。。。报了些错误,在这里记录下。
上面第一条设置可以设置为默认的,第二条不可以。。。勾选Maven应该是每个新的项目都要手动设置了。
点击同步配置文件后如下图,安装适配工具。
当然还没结束,又报错了。果然新建项目的时候还是不要装最新版SDK。。。
安装平台26的SDK即可。
再点击同步,helloworld有了!
二、Android端WebRTC知识
还学到设计模式中工厂模式和观察者模式的皮毛。
1、整体框架图
PeerConnection是从工厂创建出来的,track也是工厂创建出来再放到MediaStream里面。Android端需要实现连接的观察者接口,JS里面直接是用事件监听的。
2、注意点
IceCandidate的构造函数中必须有iceCandidate.sdpMLineIndex
、iceCandidate.sdpMid
、iceCandidate.sdp
。
创建Offer的时候,Android必须再加上下面参数,否则是无法和Web端互通的
mediaConstraints.optional.add(new MediaConstraints.KeyValuePair("DtlsSrtpKeyAgreement", "true"));
和Web端还有一个很大的不同,创建Offer和Answer的时候会有SdpObserver的回调,可以实现接口函数。
三、小结
。。。之前调试通了就兴奋地发给朋友去测试,结果安装不上apk,如下图:
我估计应该原因绝对是那个APK是Debug时候生成的,只适合我自己的手机,所以又去IDE上Generate Signed APK
。
代码放在Git上面 --> https://github.com/xiguanlezz/WebRTC_android
想试试的小伙伴可以下载apk安装玩玩看,android系统必须是7.0以上,最新的10.0也兼容。目前只有房间号为123456的可以互通,服务端没写其他的roomId。
链接:https://pan.baidu.com/s/1LIghT4Y4v8sTjB8wjoUa8g
提取码:bsur