一、Wi-Fi Direct技术介绍

WIFI Direct 意为通过 WIFI 直接建立连接。2010 年 10 月,Wi-Fi Alliance(WIFI 联盟)发布 WIFI Direct 白皮书,白皮书中介绍了关于这种技术的基本信息、特点和功能。WIFI Direct 标准是指允许无线网络中的设备无须通过无线路由器即可相互连接。这种标准支持 WIFI 的无线设备像蓝牙那样以点对点的形式互连,与蓝牙相比,在传输速度与传输距离方面有大幅提升,功耗方面也比蓝牙要高。

Wi-Fi Direct是一种点对点连接技术,它可以在两台station之间直接建立tcp/ip链接,并不需要AP的参与;其中一台station会起到传统意义上的AP的作用,称为Group Owner(GO),另外一台station则称为Group Client(GC),像连接AP一样连接到GO。GO和GC不仅可以是一对一,也可以是一对多。更厉害的是,Wi-Fi Direct和传统wifi技术并不是互斥的:GO可以可以像AP一样为几台GC提供服务;它同时可以像传统的station一样,连接到某个AP;它同时自己也可以是一个AP。

想象下这种使用场景:手机连接到某AP上网,运行youtube客户端看视频;手机同时通过Wi-Fi Direct连接到电视,将视频通过Wi-Fi Direct Display投射到大银幕上。

二、android中的运用

Android N 提供了 WIFI Direct 用于 WIFI 的直接连接。借助于 WIFI Direct API,支持 WIFI 功能的 Android N 系统的手机可以直接通过 WIFI 连接,而不需要经过接入点。

WIFI Direct 提供 WifiP2pManager 类,其功能主要分为以下三部分:

  • WifiP2pManager 类提供相关 API 用于发现可连接的点,并进行请求和建立连接。
  • 每个 WifiP2pManager 的方法都要求传入对应的监听器,用于监听对该方法是否成功运行。
  • 当检测到特定事件,如可连接的点减少或者发现了新的可连接的点,WIFI Direct 框架会通过 Intent 通知用户。

一般情况下,这三部分功能是共同使用的。例如,可以通过 WifiP2pManager.ActionListener 调用 discoverPeers(),以便当建立连接时,可以通过 ActionListener.onSuccess() 和 ActionListener.onFailure() 方法获得相应结果的通知。

当 discoverPeers() 方法探测到发现列表中的点发生改变时,一个包含 WIFI_P2P_PEERS_CHANGED_ACTION 信息的 Intent 会被广播。WifiP2pManager 提供的方法如表 1 所示。

表 1 WifiP2pManager 的方法
方法名 描述
initialize() 为应用程序注册 WIFI 框架。该方法必须在任何其他 WIFI Direct 方法被调用前调用
connect() 与具有指定配置的 WIFI 设备建立点对点连接
cancelConnect() 断开连接
requestConnectInfo() 获取设备的连接信息
createGroup() 以当前设备为拥有者创建一个点对点组
removeGroup() 删除当前的点对点组
requestGroupInfo() 获取点对点组的信息
discoverPeers() 初始化发现对等点设备服务
requestPeers() 获取当前已发现的对等点设备列表

WifiP2pManager 支持的监听器如表 2 所示

表 2 WifiP2pManager 支持的监听器
监听器接口 相关动作
WifiP2pManager.ActionListener connect(), cancelConnect(), createGroup(), removeGroup(), and discoverPeers()
WifiP2pManager.ChannelListener initialize()
WifiP2pManager.ConnectionInfoListener requestConnectInfo()
WifiP2pManager.GroupInfoListener requestGroupInfo()
WifiP2pManager.PeerListListener requestPeers()

WifiP2pManager 支持的 Intent 如表 3 所示。

表 3 WifiP2pManager 支持的 Intent
Intent 描述
WIFI_P2P_CONNECTION_CHANGED_ACTION 当 WIFI 设备的连接状态改变时广播
WIFI_P2P_PEERS_CHANGED_ACTION 当 discoverPeers() 方法被调用时广播。通过该 Intent 可以获取  到最新的对等点设备的列表
WIFI_P2P_STATE_CHANGED_ACTION 当 WIFI Direct 功能在设备上被打开或者关闭时广播
WIFI_P2P_THIS_DEVICE_CHANGED_ACTION 当 WIFI 设备的具体信息改变时广播,例如设备的名字改变时

三、AirPlay介绍

AirPlay 是苹果开发的一种无线技术,可以通过WiFi将iPhone 、iPad、iPod touch 等iOS 设备上的包括图片、音频、视频通过无线的方式传输到支持AirPlay 设备。

AirPlay具备AirPlay镜像功能,可将iPhone 或iPad 上的画面无线传输到电视上,也就是说你设备显示的是什么,电视屏幕显示就就是什么,而不仅限于图片和视频。你可以拿着iPad 来当做方向盘,然后看着大屏玩游戏。

另外AirPlay镜像最牛地方是它可以实现双屏游戏,让你的游戏有更多的交互。比如,电视里显示的是游戏画面,而iPad上显示的是比赛的路线图。

遗憾的是,苹果的AirPlay更多的只适用于认证过的苹果设备,此外还有一些苹果授权的合作伙伴的设备,如向Pioneer和Sony提供技术授权的音响。

四、Miracast 介绍

Miracast 是一种通过无线连接的方式将设备(比如笔记本电脑、平板电脑、智能手机)的音视频传送到显示设备(比如电视、监视器、投影仪)上的技术标准。它诞生的目的是用于取代使用有线方式进行连接和音视频数据传输的方式(比如HDMI)。我们也可以简单地将 Miracast 理解为“使用 Wi-Fi 进行连接的 HDMI”。

Miracast 标准的制定由 Wi-Fi 联盟发起,可以兼容不同厂家生产的设备。它基于点对点 Wi-Fi 直连技术(peer-to-peer Wi-Fi Direct)来传输数据,最高可传输 1080p 分辨率(H.264编码)的图像和 5.1 环绕声道的音频。在网络传输协议模型上,Miracast 的网络层使用 IPv4 协议,传输层可使用 TCP 或 UDP 协议,应用层使用 RTSP 协议或 RTP 协议来发起和控制数据传输。

Android4.2版本以后系统标配此功能,Miracast可以将手机上的屏幕内容镜像到电视,不仅仅是视频和图片。

五、DLNA介绍

DNLA,Digital Living Network Alliance,是索尼、英特尔、微软等发起的一套 PC、移动设备、消费电器之间互联互通的协议。它们的宗旨是“随时随地享受音乐、照片和视频”。

DLNA与苹果的AirPlay功能比较类似,协议也大体相同,他们都可以让你手机中的媒体内容投放到电视屏幕里。不同的是手机上的DLNA 并没有类似Apple TV的AirPlay的镜像功能,也没有Apple TV 所支持的双屏体游戏体验。目前DLNA更多只是能将手机的照片和视频投送到大屏幕中。

另外,在线视频也可以用DLNA模式推送到客厅电视上显示,安卓系统部分播放器就具备DLNA功能,目前支持无线推送的视频客户端有以下:腾讯视频、搜狐视频、PPTV视频。可以将原来应该在N7屏幕的影片转移到电视屏幕上。前提是你要有能支持DLNA的电视或者电视盒。

六、DLNA和Miracast区别

DLNA是基于文件的,媒体文件可能有各种各样的编码格式,播放器这端必须能够处理这么多种编码格式。通常为了比较好的播放体验,DLNA会先缓存一小段时间。

Miracast是实时的,它可以实时传输源端(Source)的输出。源端任何屏幕的操作都会被传输到接收(Sink)端。如果源端是播放媒体文件,源端负责先对媒体文件解码,然后再编码成H.264的格式。接收端只需要做H.264的解码就可以了。相对DLNA,Miracast对于WiFi通路的要求要更高一些。

Wifi Direct相关推荐

  1. 【教程】Microsoft Wi-Fi Direct Virtual关闭方法

    使用Win10电脑的用户应该有不少会发现自己的电脑网络适配器里面多了一个设备叫"Microsoft Wi-Fi Direct Virtual Adapter",这个设备不仅仅存在, ...

  2. java 开启wifi_通过java代码打开wifi direct

    刚开始学习android,叫我们做一个使用Wifi Direct功能进行定位,在打开WIfi Direct时不想进入设置里去打开,而想在程序中直接打开.于是下载了android的settings的源码 ...

  3. Android | WIFI Direct -1 Basic knowledge

    WIFI P2P 1 . 名词缩写 2. WIFI 模块几种常见工作模式 3.两种常见频段 4. P2P 中的几种角色 5. P2P 的组网技术 6 . Android 中的P2P 1 . 名词缩写 ...

  4. Wi-Fi Direct 和 wifi display

    Wi-Fi Direct:是指允许无线网络中的设备无需通过无线路由器即可相互连接.与蓝牙技术类似,这种标准允许无线设备以点对点形式互连,而且在传输速度与传输距离方面则比蓝牙有大幅提升. Wi-Fi D ...

  5. Wi-Fi Direct协议详解

    理论上,Wi-Fi Direct属于纯软件协议,也就是说不需要额外的硬件支持,只要支持802.11g.n或者ac的设备都可以实现Wi-Fi Direct的基本功能.但一些高级功能,比如Wi-Fi Di ...

  6. 深入理解wifi direct

    wifi direct 又称 wifi peer-to-peer,优势为直连,无需通过无线局域网. wifi direct和蓝牙类似,但传输距离.速度都优于蓝牙,但耗电量较大. wifi dierec ...

  7. [转载]WIFI Direct/WIFI P2P

    上节说过了网卡的选型,之所以网卡的选型如此重要,主要是因为Miracast网卡相比较于普通的网卡多了个P2P功能,底层可靠了,才能很好的进行接下来的上层开发,如果我们已经有了可靠的P2P网卡以及网卡驱 ...

  8. Android Webrtc使用Wifi Direct无法建立P2P连接

    问题描述: 两个安卓设备之间已经完成WiFi直连,但是依旧无法使用webrtc建立peer connection连接,也就无法实时传输媒体数据. 原因: 根据log调查后发现,主要的失败的原因在于此处 ...

  9. hp 打印机更改 wifi direct 的密码

    首先连接 hp 打印机的 wifi direct 在浏览器中输入 192.168.223.1 出现的网页中, 选择 Network 在左侧的工具栏中, 选择 Wi-Fi Direct, 展开后点击 S ...

  10. direct wifi 投屏_【教程】Microsoft Wi-Fi Direct Virtual关闭方法

    使用Win10电脑的用户应该有不少会发现自己的电脑网络适配器里面多了一个设备叫"Microsoft Wi-Fi Direct Virtual Adapter",这个设备不仅仅存在, ...

最新文章

  1. 发展之道:简单与专注 王泽宾
  2. hdu 1003 Max Sum
  3. python输入两个变量的值、输出大的_Python 变量和输入输出 关卡二
  4. 如何linux查看mysql目录下日志_测试人员如何在linux服务器中查询mysql日志?
  5. mysql user_tab_cols_最新Oracle 和 mysql 的对比参照----开发篇(转)
  6. LeetCode 774. 最小化去加油站的最大距离(极小极大化 二分查找)
  7. unity串口 连接多个串口崩溃_3分钟全面了解串口服务器原理技术
  8. mysql jar jdk1.6_搭建非安装版mysql+jdk1.6+tomcat6
  9. js datagrid 移动去重
  10. oracle 输出入参怎么抛异常,oracle 存储过程入参 pids , varchar2 类型,where in 条件 会抛异常...
  11. PHP+MySQL制作简单动态网站(附详细注释+源码)
  12. 敏捷DoD和DoR的多种形态
  13. java微信公众号扫码登录对接流程
  14. 微信小程序 身份证号码验证 15/18位身份证号码验证的正则表达式总结(详细版)
  15. 给class类加css样式,addClass()
  16. python中sticky_vue-sticky组件详解
  17. 《幸福就在你身边》第九课、确信自己有好命【哈佛大学幸福课精华】
  18. 制造业干货,只需3步,快速提高产品良率!
  19. linux系统下能玩网页游戏下载软件,最适合玩游戏的Linux 系统
  20. 什么email邮箱可以作为公共邮箱?

热门文章

  1. Gitee 倒下了!!!
  2. CentOS安装Gitea教程
  3. android 闪光灯(手电筒)工具类,兼容android9.0
  4. ORACLE函数大全
  5. excel 折线图和面积图拼接
  6. 狭义线性模型与广义线性模型
  7. 海贼王热血航线服务器维护,航海王热血航线1234区从今开始
  8. 【快代理】Python SDK 使用
  9. Linux环境变量PS1_命令行提示符设置
  10. Java的acid是什么意思_事务的ACID理解