设备互联 (二) p2p连接

news/2025/1/31 0:11:09/

        安卓设备之间的投屏互联,为了便捷使用无线连接,为了低延时用udp进行数据传输。因为短距离的数据传输,如果使用TCP进行音视频数据传输,容易出现视频数据堆积、音频数据卡顿等问题。

       wifidisplay 的连接考虑的是整个安卓平台设备,所以p2p连接过程是走标准的p2p流程:p2p设备搜索、主从设备协商、连接过程。对p2p整个流程有兴趣的小伙伴可以跟下看下这几篇p2p的文章很详细:https://www.jianshu.com/p/38da33064659 Android-内功篇-WifiP2p-WifiP2pService的启动以及P2P的连接_ZWAlert的博客-CSDN博客
谈谈对WiFi P2P的理解_SKY.D的博客-CSDN博客_p2p wifi

走标准的p2p协商有两个问题:(1)主从关系可能协商失败,因为可能协商的等级相同;(2)p2p协商组群,默认走2.4G 通道。问题1会出现 wifidisplay连接不上;问题2 是限制了板子传输能力,现在很多设备都是带双天线,支持5G通道,如果限制在2.4G,就限制了传输能力,抗干扰能力也较弱。所以在定制内部互联协议时,为了快速连接,通过其它方式获取到mac地址,例如通过蓝牙交互、通过NFC、通过二维码,快速获取mac,进行组网。如下代码是简单的创建p2p GO,设置设置为5G传输通道,GO的创建要在要在通道设置之前,否则会设置失败。另外如果要设置成5G 通道,需要硬件支持,如果设置失败,先确认下硬件设备是否支持

        wifiP2pManager.createGroup(channel, new WifiP2pManager.ActionListener() {@Overridepublic void onSuccess() {}@Overridepublic void onFailure(int reason) {}}    WifiP2pConfig config = new WifiP2pConfig.Builder().setNetworkName("DIRECT-sink").setPassphrase("passphrase").enablePersistentMode(false).setGroupOperatingBand(WifiP2pConfig.GROUP_OWNER_BAND_5GHZ).build();wifiP2pManager.createGroup(channel, config, new WifiP2pManager.ActionListener() {@Overridepublic void onSuccess() {dismissLoadingDialog();showToast("onSuccess");}@Overridepublic void onFailure(int reason) {dismissLoadingDialog();showToast("onFailure");}});

获取mac后进行连接,连接代码如下

        WifiP2pConfig config = new WifiP2pConfig();if (config.deviceAddress != null && mWifiP2pDevice != null) {config.deviceAddress = mac;config.wps.setup = WpsInfo.PBC;wifiP2pManager.connect(channel, config, new WifiP2pManager.ActionListener() {@Overridepublic void onSuccess() {}@Overridepublic void onFailure(int reason) {}});}

这样最简单的p2连接就完成了。

有些同硬件相关的是在性能前期评估时时需要确认的,所用的平台是单天线还是双天线,5G、2.4G对应的带宽是多少,这些都会直接影响用户的体验效果。如果只有单天线,p2p跟AP有个占比会有数据接收的时间切换,这样数据传输就容易出现较大的抖动,对延时、画面流畅、音频是否卡顿都会有较大的影响。

当然在获取mac过程都需要先通过各种方式的认证,毕竟手机涉及各种隐私,需要保证隐私安全。


http://www.ppmy.cn/news/440289.html

相关文章

基于app_inventor的手机aap与单片机蓝牙互联教程

需要的工具:单片机,蓝牙通讯模块 步骤一:打开app_inventor开发站点:AppInventor汉化版 - 汉化并增强的 App Inventor 2 服务器 登录后新建一个项目,不做改动的话,项目名称默认为app名字 界面如下&#xf…

Win10/Win11日历提醒与手机日历同步互联+自带邮件收发配置

文章目录 Win10/Win11日历提醒与手机日历同步互联日历提醒同步配置说明日历同步同步规则删除规则使用建议附:钉钉方式创建日程 邮件同步 配置QQ邮箱开启所需服务复制授权码 配置Windows日历配置同步间隔 配置手机日历添加邮件账户 测试在Windows添加活动去手机端查看…

QQ互联对接踩坑

摘要 最近个人博客项目准备使用QQ第三方登录,需要使用QQ第三方登录的话需要申请QQ互联认证,通过才能创建应用,这里不得不吐槽下QQ互联了,审核机制不友好,网站体验非常差,正好最近看到很多人在群里问相关的…

鸿蒙手机下载安装,鸿蒙系统手机安装包

鸿蒙系统手机安装包由中国的研发团队打造,鸿蒙系统手机安装包具有优秀的操作系统,全新的黑科技,界面简洁又大方,使用起来更顺畅。面向未来的操作系统,面向所有的智能设备,并且可以部署多个界面。运行速度快…

SOC与SIP小芯片两种IP互联技术

在文章《芯片设计与加工》最后IP互联的两种常用方式,一种是SOC,第二种SiP这种小芯片技术(胶水芯片)。本篇文章主要是梳理这两种常用连接技术的一些基本概念,至于独立IP内部的功能原理,这里不做探讨&#xf…

腾讯云服务器如何实现内网互联?

操作场景 轻量应用服务器使用腾讯云自动分配的 私有网络 VPC 进行网络隔离,默认情况下内网不与云服务器 CVM、云数据库等其他处于私有网络 VPC 中的腾讯云资源内网互通,需通过关联云联网实现。该功能主要适用于以下业务场景: 轻量应用服务器…

网工大题题型总结(1)-------网络安全方面考察

(1)2018年上半年 试题二 (3)常见的无线网络安全隐患有 IP 地址欺骗、数据泄露、(8)、(9)、双络通信被窃听等; 为保护核心业务数据区域的安全,网络管理员在设备①处部署(10)实现核心业务区域边界 防护;在设备②处部署…

Nucleo-F411RE (STM32F411)LL库体验 8 - PWM的使用

Nucleo-F411RE (STM32F411)LL库体验 8 - PWM的使用 1、简述 LD2连接PA5,而PA5可以映射TIM2_CH1,配合TIM2,可以输出PWM。 本片文章大量工作是添加了shell命令,可以通过pwm命令开关pwm以及设置pwm的频率&am…