【安卓】安卓设备实现wifi display解决方案

news2025/2/28 17:43:15

看文章前,我们需要知道的几个概念:
1、Wifi Direct技术;
2、Wifi Display技术;
3、Miracast标准;
安卓手机用户都知道我们的安卓手机有一个wifi直连功能,在点击设置–》WIFI–》更多Wifi设置–》Wifi直连; 目前的重点就是Wifi 直连(Wifi direct),它是干什么的呢?对于它的功能,我们开发者很快的期望可以有一个Wifi Direct演示Demo,大家可以通过下载Demo进行运行操作。
我们也可以先去谷歌开发者文档里面查一下Wifi相关的Api。在这里插入图片描述 通过演示上面的Demo我们发现Wifi direct技术原理是底层实现了Scoket链接,它是可以替代蓝牙传输的技术实现,传输效率快蓝牙传输100倍,但是也有缺点就是功耗高(耗电)。 有些资深安卓用户应该知道Wifi 直连可以实现安卓手机和大屏设备之间的投屏操作,比如目前华为的Mate book笔记本,就可以通过NFC功能,直接把手机屏幕投屏到笔记本屏幕上。
在没有实现手机和大屏设备链接到同一个网络的情况下,是如何实现无线传输的呢?
下面我们就来介绍Wifi display技术,我们发现Wifi display技术是需要设备之间遵循Wifi 联盟组织制定的Miracast标准,该标准制定了投屏协议,一般遵循手机端作为source端,大屏设备作为sink端,简单一句话:就是标准定义了:只能通过手机投屏到大屏设备(前提还需要大屏设备也支持Miracast标准)。
推荐博客:WLAN direct (WLAN直连)如何使用?,通过Wifi直连可以将电视机与同时支持“DLNA推送控制器”功能的Wi-Fi Direct/Wi-Fi兼容设备(例如智能手机、PC)直接连接。设备上的照片/音乐/视频等内容可以在电视机上播放。不需要无线路由器(或访问点)即可使用此功能。
在这里插入图片描述
![在这里插入图片描述](https://img-blog.csdnimg.cn/49d022ffee7d41138dc94e675af7f2b2.jpe

要支持Wifi display技术,我们的大屏设备需要获取Miracast认证,这个认证如何获取呢?我个人觉得应该需要联系Wifi联盟组织进行合作才行。
在这里插入图片描述
目前百度百科里面显示支持Miarcast标准的接收端,也就是大屏设备只有以下几种:
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
关于Miracast标准的博客推荐:Miracast技术详解(一):Wi-Fi Display
手机如何使用wifi display链接电视的博客推荐:手机连接电视WiFidisplay
安卓如何实现播放端:Android投屏Sink端实现研究

通过以上的技术调研我们可以得出以下几个结论:
1、Wifi dircet无法实现视频预览功能,因为视频预览需要符合C/S架构,基于互联网协议。
2、Wifi direct是用来替换蓝牙传输的技术方案,它的实现原理是底层建立了Socket链接,这也是它比蓝牙传输功耗更高的原因(耗电高);
3、手机和大屏设备间的投屏实现原理是设备间基于wifi直连技术同时设备必须支持Wifi 联盟组织Miracast标准;安卓手机默认有source端的api,只是没有暴露出来给开发者,这也是我们在Google开发者文档看不到的原因,我们如果想要调用,需要通过反射的方式(有技术实现难度,而且各个手机厂商的api有可能被定制化了)。
以上就是我们得到的结论,那么如果我们还是想实现投屏怎么办呢?
推荐博客:有哪些投屏SDK可以选择?
博客主要罗列了以下三种第三方SDK实现设备间投屏的实现:
1、必捷互联(推荐)
2、幕享SDK
3、乐播投屏

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/379581.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

回顾2-JAVA的标识符和关键词

JAVA的标识符和关键词 标识符概念: 所有地方都需要名称 如: 类的名字>类名 如:变量的名字,方法的名字,特殊关键词语的名字 这些符号就是一种标识, 涵盖一些意思 简单理解, 就是一种标记,识别,的符号关键词 这些词语, 在JAVA程序中, 被赋予了特殊的意义, 使用时候要避开同名…

编写SPI设备驱动程序

编写SPI设备驱动程序 文章目录编写SPI设备驱动程序参考资料:一、 SPI驱动程序框架二、 怎么编写SPI设备驱动程序2.1 编写设备树2.2 注册spi_driver2.3 怎么发起SPI传输2.3.1 接口函数2.3.2 函数解析致谢参考资料: 内核头文件:include\linux\s…

Python实现GWO智能灰狼优化算法优化BP神经网络回归模型(BP神经网络回归算法)项目实战

说明:这是一个机器学习实战项目(附带数据代码文档视频讲解),如需数据代码文档视频讲解可以直接到文章最后获取。1.项目背景灰狼优化算法(GWO),由澳大利亚格里菲斯大学学者 Mirjalili 等人于2014年提出来的一种群智能优…

Shell高级——Linux中的文件描述符的本质(数组的下标)

以下内容源于C语言中文网的学习与整理,非原创,如有侵权请告知删除。 前言 Linux中一切接文件,比如 C 源文件、视频文件、Shell脚本、可执行文件等,就连键盘、显示器、鼠标等硬件设备也都是文件。 一个 Linux 进程可以打开成百上…

第15天-商城系统架构,首页渲染三级分类及搭建域名访问商城

1.商城系统介绍 1.1.技术方案 前后端分离服务端模板渲染(选择)商品详情页面静态化改造(优化) 1.2.动静分离架构 2.模板引擎Thymeleaf 2.1.Thymeleaf介绍 官方文档:https://www.thymeleaf.org/doc/tutorials/3.0/usin…

今天,小灰37岁了!

人们常常说,35岁是互联网人的中年危机。现在,小灰已经跨过了中年危机,倒不是因为小灰财务自由了,而是因为今天是小灰37岁的生日。年轻时候,小灰总觉得30岁是一个很遥远的年龄,而现在,小灰距离40…

KingbaseES V8R6 运维系列 --单机小版本升级

​ 案例说明: 在KingbaseES V8R6版本提供了sys_upgrade的升级工具, 本案例描述了KingbaseES V8R6单机环境下数据库的小版本升级操作,案例涉及的版本从‘(Kingbase) V008R006C005B0041’通过sys_upgrade升级到‘ (Kingbase) V008R006C005B0054…

【Java】Java进阶学习笔记(四)—— 抽象类与接口

【Java】Java进阶学习笔记(四)—— 抽象类与接口一、抽象类1、抽象类的概念抽象类的定义格式2、抽象类的注意点抽象方法的介绍3、抽象类的具体作用4、抽象类实例二、接口(一)、接口的概念1、接口与类的区别2、接口特性3、抽象类和…

MyBatis 查出数据不一致 MyBatis返回数据和数据库查询不一致

MyBatis 查出数据不一致 MyBatis返回数据和数据库查询不一致 --- MyBatis查询到的数据 和 Sql 查询到的数据不一致 一、背景 近期工作中,遇到一个MyBatis查询数据不一致的问题,表现是: sql在数据库中查询出10条数据,mybatis 返回的…

【服务器数据恢复】VSAN数据迁移中断导致容量盘故障的数据恢复案例

VSAN简介: VSAN是以vSphere内核为基础开发,可以扩展使用的分布式存储架构。该架构在vSphere集群主机中安硬盘及闪存构建VSAN存储层,通过存储进行管理与控制,最终形成一个共享存储层。 VSAN数据存储是一个对象存储,以文…

MySQL事务的12连问

事务的12连问,相信大家看完肯定会有帮助的。 1. 什么是数据库事务? 事务,由一个有限的数据库操作序列构成,这些操作要么全部执行,要么全部不执行,是一个不可分割的工作单位。 假如A转账给B 100 元,先从A的…

windows@系统环境变量备份@注册表操作@reg命令行操作注册表

文章目录备份注册表🎈备份环境变量powershell函数从注册表文件还原命令行操作注册表更新某个key备份注册表🎈 完整的注册表备份可能达到500MB打开register editor 命令行里可以输入regedit.exe打开 可以局部备份 备份环境变量powershell函数 function …

JavaEE进阶第五课:SpringBoot的创建和使用

上篇文章介绍了Bean 作用域和生命周期,这篇文章我们将会介绍SpringBoot的创建和使用 目录1.为什么要学习StringBoot1.1什么是SpringBoot1.2SpringBoot的优点2.如何用Idea创建SpringBoot项目3.项目目录介绍和运行3.1输入Helloworld结尾1.为什么要学习StringBoot 在前…

Python 算法交易实验49 Step1 DataETL

说明 万丈高楼平地起 按照前面的规划,开始有序推进我的【15% 资金加速器】计划。这一步是通过某个源,获取分钟级数据,然后送到第一个ADBS。 Sniffer : 读取数据并发送到入队列。一开始我会把文件以离线形式上传到某个folder,所以…

VMware16安装MacOS【详细教程】

安装VMware workstation 双击安装包,然后一直下一步就行了。 进行VMware安装,一直 下一步 在输入产品密钥这一步,如果有查找到可用密钥就填进去,没有就跳过,进入软件后也能输入密钥的。 输入密钥。 最后一步&#xff…

MyBatis——进阶操作

resultMap xml中可以通过returnType来指定返回的对象,只需要一个对象名就可以返回所有的属性 但是,如果sql中的属性名和对象的名称不一致,那么就需要resultMap来指定返回的数据了 当数据库中是username,而对象是name时&#xf…

zabbix主机发现、zabbix下的API、服务的监控部署

文章目录前言一、zabbix主机发现1.手动添加2.自动发现3.自动注册二、zabbix api1.获取token2.使用api检索主机3.通过api删除主机4.使用api添加主机5.纯代码过程三、服务监控1.nginx监控2.mysql监控(1)zabbix自带mysql模板(2)perco…

大数据技术之Maxwell基础知识

大数据技术之Maxwell基础知识 文章目录大数据技术之Maxwell基础知识0、写在前面1、Maxwell 概述1.1 Maxwell 定义1.2 Maxwell 工作原理1.2.1 MySQL 主从复制过程1.2.2 Maxwell 的工作原理1.2.3 MySQL 的 binlog1.3 Maxwell与Cannal对比2. Maxwell 使用2.1 Maxwell 安装部署2.1.…

Semaphore类原理剖析

1.什么是Semaphore Semaphore也是Java中的同步器,与CountDownLatch和CyclicBarrier不同的是,他的内部计数器是递增的。在一开始我们不需要知道有多少个需要同步的线程,只需要在需要同步的地方调用acquire方法指定需要同步的线程个数。 2.Se…

【C语言】结构体进阶

一、结构体 1. 结构体的声明 (1) 结构的基础知识 结构是一些值的集合,这些值称为成员变量。结构的每个成员可以是不同类型的变量。(2)结构的声明 struct tag {member-list; }variable-list;例如描述一个学生&#x…