https://blog.csdn.net/xmc281141947/article/details/60573311/

公司业务需要在安卓车载产品和手机端实现WiFi Display(Miracast)功能,可能是最近浪的比较久,这项任务最终指派给了我,公司是衣食父母嘛有任务义不容辞。周一接到任务夸下海口一周内完成,周一到周三继续浪~浪你个浪~浪你个浪~浪~~~,周四开始百度“WiFi Display(Miracast)功能”,好家伙,各种讲解原理,什么发送端、接收端、TCP、RTP、RTSP、 P2P……不看还好一看彻底蒙逼,整个人都不好了。

周四晚上加班到深夜一个人缕缕思路,得出以下结论:内部怎么实现的与我无关,所以什么TCP、RTP、RTSP、 P2P等等我都不要去管它。

再看一遍百度WiFi Display解释: 
支持Wi-Fi Display的发送端设备主要有:一加、HIKe Z1、MEIZU MX3、vivo Xplay、oppo find 5、LG: nexus4、F180L、F200L、LS970、F180S、F180K、F200S、200K;NEC CASIO: N-03E;Samsung: GT-I9300、GT-I9300Z;红米1S;红米2;小米2;小米2S;小米2A;小米3;小米4;Nubia Z5,Nubia Z5mini,Nubia Z7mini,Nubia Z7 max,Nubia Z7 Nubia Z11mini;callbar小雨滴4;中兴V5等 
支持Wi-Fi Display的接收端设备主要有:智开miracast大屏分享器、小技PTV、WiPlug(中文名:推)、多笑金箍棒、小米盒子、、乐视盒子、无线视界等

这段话的重点在与:发送端和接收端,发送端比较好理解就是我们用的手机,各种手机WiFi Display(Miracast)功能叫法不一样,大部分位“多屏互动”,也有一些是“屏幕分享”等等。 
接收端就比较难理解,百度也各种是列举了各种盒子,那么我们车载产品倒底支持接收(sink)吗?例如我司主要使用的是MTK的平台(6582/6753等),这种情况就要查阅MTK-DCC了,分两步:

1,首先请到MTK的DCC上搜索VideoSpecification(登录MTK的DCC需要Account 和Password ,一般使用MTK平台的公司MTK都会提供账户的),然后可以找到对应平台的这个压缩文件(不断更新,包含之前平台的支持情况),然后解压出来,会有一个excel文件; 
2,请打开这个excel,查看(2) mtk Video Spec_SP 这页,然后找到External Display–>WIFI Display(WFD Miracast)查看支持情况,可以查到各平台支持的情况。如下图: 
这里写图片描述

可以看到MT6582支持发送,但不支持接收(sink),MT6753支持发送和接收,完美~

接下来就是拷贝MT6753的源码,该源码当然是由MTK提供,将源码烧到该平台,打开设置找有关接收的(sink)地方,结果并没有想像中的那么顺利的找到sink。

怎么办?明明写的支持啊?这时时间来到了周五,汇报进度的日子了~~~

又是在网上一通胡乱看相关博客,然后并没有什么卵用……

后面我就试着用“Ubuntu”在源码里面搜索:find -name “Wi-Fi Display”,结果找到下图: 
这里写图片描述

哦~Sittings明明就是有Wi-Fi Display的设置嘛,问题已很清晰了,xml有关于Wi-Fi Display的布局但是系统默认是隐藏的,在搜索WiFi Display字段,找到xml–>display_settings.xml中对WiFi Display的引用部分有隐藏,打开隐藏的代码,全编一下烧录进去,果然在车机上:设置-显示-投屏。然后按照网上的步骤建立连接,完成任务。最后发一张完成连接的图:

这里写图片描述

最后,本篇文章没有代码部分的展示,主要是展示解决问题的思路,毕竟“编程注重的是思路”。

版权声明:本文为匿名原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接: