WebRTC学习之路---Android端与Web端交互

       二进制前缀:0b,十六进制前缀:0x,八进制前缀:0。
       又多了解了一点javaSE的知识,java内部接口默认就是静态的。


       先说效果:不管你在哪里,应该都是可以穿透的,加入到123456房间后可以音视频互动。Android端与Web端交互成功之后,两个APP也是可以通的!

一、Android Studio小坑

       为了打通Android和浏览器的互通,安装了4年前用的IDE。。。AS。。。报了些错误,在这里记录下。
WebRTC学习之路---Android端与Web端交互_第1张图片
WebRTC学习之路---Android端与Web端交互_第2张图片
       上面第一条设置可以设置为默认的,第二条不可以。。。勾选Maven应该是每个新的项目都要手动设置了。

       点击同步配置文件后如下图,安装适配工具。
WebRTC学习之路---Android端与Web端交互_第3张图片
       当然还没结束,又报错了。果然新建项目的时候还是不要装最新版SDK。。。
Alt
WebRTC学习之路---Android端与Web端交互_第4张图片WebRTC学习之路---Android端与Web端交互_第5张图片
       安装平台26的SDK即可。
WebRTC学习之路---Android端与Web端交互_第6张图片

       再点击同步,helloworld有了!
WebRTC学习之路---Android端与Web端交互_第7张图片



二、Android端WebRTC知识

       还学到设计模式中工厂模式和观察者模式的皮毛。

1、整体框架图

WebRTC学习之路---Android端与Web端交互_第8张图片
       PeerConnection是从工厂创建出来的,track也是工厂创建出来再放到MediaStream里面。Android端需要实现连接的观察者接口,JS里面直接是用事件监听的。


2、注意点

       IceCandidate的构造函数必须有iceCandidate.sdpMLineIndexiceCandidate.sdpMidiceCandidate.sdp

       创建Offer的时候,Android必须再加上下面参数,否则是无法和Web端互通的

	mediaConstraints.optional.add(new MediaConstraints.KeyValuePair("DtlsSrtpKeyAgreement", "true"));

       和Web端还有一个很大的不同,创建Offer和Answer的时候会有SdpObserver的回调,可以实现接口函数。



三、小结

       。。。之前调试通了就兴奋地发给朋友去测试,结果安装不上apk,如下图:
WebRTC学习之路---Android端与Web端交互_第9张图片
       我估计应该原因绝对是那个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

你可能感兴趣的:(音视频相关知识)