start_time: 2024-04-19 15:19:17 +0800

android设备投屏技术🔥:协议&概念

96
细卷子
IP属地: 陕西
3.9 2017.07.01 19:14 字数 2958

前言

由于工作上的需求,开始接触投屏技术。

为何要写这篇文章?
我怀疑想学这技术的人群不多,也许文章不会火,毕竟也不是什么热门技术。
但正因为不是热门技术,所以资料很少。我也是自己摸索过来的,我希望写完这篇文章能帮助更多想学习这门技术的人。

“投屏技术”听起来挺高大上的样子,觉得可能比较难。其实实现并不难,因为有了很多成形的底层平台,在一些比较好的平台上 连 demo 也帮你写好了。
虽然实现不难,但<b>作为优秀的程序员 我们知其然也要知其所以然</b>。所以我们要理解它的原理。(看到“原理”,莫慌,我保你能轻松理解)

android投屏技术,我分三个部分来讲:
关于 android 投屏技术系列:
一、知识概念

这章主要讲一些基本概念, 那些 DLNA 类库都是基于这些概念来做的,了解这些概念能帮助你理清思路,同时可以提升开发效率,遇到问题也能有个解决问题的清晰思路。

二、手机与tv对接

这部分是通过Cling DLNA类库来实现发现设备的。
内容包括:

  1. 抽出发现设备所需接口
  2. 发现设备步骤的实现
  3. 原理的分析

三、手机与tv通信

这部分也是通过Cling DLNA类库来实现手机对tv的控制。
内容包括:

  1. 控制设备步骤
  2. 控制设备代码实现
  3. 手机如何控制tv
  4. tv将自己的信息如何通知手机
  5. 原理的分析

第二部分跟第三部分 我是通过使用Cling DLNA类库来实现的,目前已知的搜狐视频就是用的Cling。而且Cling实现起来还算不难,所以公司也使用Cling来实现投屏。

关于投屏 ios 可以使用苹果公司的 airplay,android 设备投屏 可以使用 DLNA 功能来实现投屏 android 设备是具备 DLNA 功能的,而且很多物理设备也是具有 DLNA 功能的。

概念①:什么是DLNA

专业术语:
DLNA的全称是DIGITAL LIVING NETWORK ALLIANCE(数字生活网络联盟)。
DLNA(Digital Living Network Alliance) 由索尼、英特尔、微软等发起成立、旨在解决个人PC,消费电器,移动设备在内的无线网络和有线网络的互联互通。
DLNA 2003年诞生是为了能够把当时相互独立的电视机及其相关设备(功放、音响、DVD/蓝光播放机)、PC及其相关设备(数码相机、音乐播放器)和移动电话在家庭中有机地整合起来,使得多媒体内容能够在各个设备上便捷地播放。

通俗术语:
DLNA(数字生活网络联盟) 就是大佬们一起搞事情 商讨“我们要将物联网设备连接起来,怎么搞啊?” 搞着搞着 就搞出了这套设备的工业标准。 然后让其他设备具备 DLNA 这种工业标准,这样这些设备就可以互联互通了。

概念②:UPnP组件

UPnP组件包括如下:


UPnP组件

投屏设备提供 控制服务、事件服务和展示服务,android设备通过控制点控制投屏设备的这些服务。

  • 根设备 与 设备:
    设备 就是那些物联网设备 如:家用电器、盒子 等。因为一台 UPnP 设备可以是多个服务的载体或多个子设备的嵌套,所以存在一个根设备的概念。

  • 服务:
    是指 设备所支持 能提供的服务,例如:支持 控制服务、事件服务、展示服务。

  • 控制点:
    控制点 就是可以发现并控制其他设备的控制设备。听起来有点绕,其实就是控制设备,例如: android 设备需要控制设备来控制投屏设备的视频播放、暂停等操作,就需要控制点对设备进行控制。

下面是我们想象一下投屏的过程:
我在看楚乔传,我觉得手机屏幕太小看得不爽,我想要我的 android 手机投屏到大屏显示器上。
首先需要两个设备(一个是 android 手机,另一个是小米盒子)都连上同一个局域网中(假设连接的是 wifi),我的小米盒子就告诉 wifi 它的描述信息,android 手机开始进行设备发现,就发现了我的小米盒子。然后 我就点击楚乔传 要将它投屏到显示器上,那么首先 小米盒子要支持投屏(这里路由器已经知道了小米盒子支持投屏的), android 手机就通过控制点来控制视频的播放了。(视频的传输的话,可以直接传视频流。但现实情况不是这么干的。因为手机屏幕小,显示器屏幕大,所以显示器需要更清晰的分辨率,因此跟手机上的播放片源是不同的,所以只需要换一个更清晰的片源 url 就好了)

  • 设备发现:
    android设备投屏,首先android设备就要找到所有支持投屏的设备,找到设备的过程就是设备发现。

  • 设备控制:
    例如:android设备将视频播放投屏到显示器上,设备需要对显示器上的视频进行 播放、暂停、进度拖拽等操作,这些操作就是设备控制。

  • 设备事件:
    例如:android 设备需要随时知道 支持投屏设备在局域网中的出现,当出现一个新的设备 android 设备就通知到,要实现这点 android 设备就要订阅这个事件,这也就是设备事件。

DLNA 标准包括多项协议及标准,其中最重要的部分是 UPnP 协议

概念③:那些协议

协议部分,可能比较无聊(可能是我写得比较无聊吧 ),还是稍微了解一下吧。

UPnP协议栈:
UPnP是由“通用即插即用论坛”(UPnP Forum)推广的一套网络协议,它的目标是实现设备间网络互联。

  • UPnP协议定义了设备之间,设备和控制点,控制点之间通信的协议
  • 完整的UPnP协议栈由设备寻址、设备发现、设备描述、设备控制、事件通知以及基于Html的描述等几部分构成
UPnP协议内容

别被吓跑了,我们目前还不用了解很透彻,心里有个底就好了,这对我们之后理解有帮助。
该图每一层都以相邻的下层为基础,同时又是相邻上层的基础。直至达到应用层为止。
看到这个图有没有想到 ISO 七层模型

我从下至上来介绍一下:

ip网络协议 大哥哥

IP:就是ip网络协议
为什么需要它?
因为用到网络层数据的传输,IP层用于数据的发送与接收。
想象一下两个设备互联,其实就是在网络互联,所以需要网络层协议。

TCP-UDP

这里包含了UDP和TCP两块协议。
这里图应该这样表示:

一堆看不懂的?

UDP协议跟IP协议组合成:UDP/IP协议
而 HHTPMU 和 HTPU 这两个协议是基于 UDP/IP 协议之上的。
TCP协议跟IP协议组合成:TCP/IP 协议
HTTP 则是基于 TCP/IP 协议上。

TCP/IP 协议大家应该都了解,但为何出现一个 UDP/IP 呢?
使用UDP,可以通过多点传送(Multicast)向 LAN 上所有支持UPnP的设备发送新设备接入的通知。这里流媒体 也会使用 UDP 来传输,因为速度快。

HHTPMU 和 HHTPU 是什么?
它是构建在 TCP/IP 协议之上的是 HTTP 协议及其变种,所有 UPnP 消息都被封装在 HTTP 协议及其变种中。HTTP 协议的变种是 HTTPU 和 HTTPMU,这些协议的格式沿袭了 HTTP 协议,只不过与 HTTP 不同的是他们通过 UDP 而非 TCP 来承载的,并且可用于组播进行通信。
可见 它之所以存在就是替换 TCP 为 UDP。

接下来就是 设备发现 | 设备控制 | 设备事件 协议了:
(打起精神 )
1、设备发现 SSDP 协议
简单服务发现协议(Simple Service Discovery Protocol:SSDP)
具体包括控制点如何发现网络上有哪些服务,以及这些服务的资讯,还有控制点本身宣告他提供哪些服务。

2、控制设备 SOAP 协议
简单对象访问协议(Simple Object Access Protocol:SOAP)
它定义如何使用 XML 与 HTTP 来执行远程过程调用。包括控制点如何发送命令消息给设备,设备收到命令消息后如何发送响应消息给控制点。

3、设备事件 GENA 协议
通用事件通知架构(Generic Event Notification Architecture:GENA)
定义在控制点想要监听设备的某个服务状态变量的状况时,控制点如何传送订阅信息并如何接收这些信息。

体系定义

这一层仅仅是一个抽象的、公用的设备模型。就是一个规范 定义,所有的 UPnP 设备都必须使用这层。

UPnP论坛

UPnP 论坛的各个专业委员会的设备定义层,在这个论坛中,不同电器设备由不同的专业委员会定义,例如:电视委员会只负责定义网络电视设备部分,空调器委员会只负责定义网络空调设备部分,依此类推。

UPnP设备制造厂商定义

也就是应用层,由 UPnP 设备制造厂商定义的部分。

总结:
内容都是一些概念,所以比较枯燥,下面章节我会通过代码一步一步实现投屏,还深入进行原理的分析噢。一周内更新,不要错过!
下章预告:
手机通过WIFI发现设备
这部分是通过Cling DLNA类库来实现发现设备的。
内容包括:
1、抽出发现设备所需接口
2、发现设备步骤的实现
3、原理的分析

android实现投屏代码

最后编辑于 :2021-02-25 11:55:58
©著作权归作者所有,转载或内容合作请联系作者
序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
783c64db 45e5 48d7 82e4 95736f50533e 沈念sama 阅读 157012 评论 4 赞 359
序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
783c64db 45e5 48d7 82e4 95736f50533e 沈念sama 阅读 66589 评论 1 赞 290
文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
8 开封第一讲书人 阅读 106819 评论 0 赞 237
文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
8 开封第一讲书人 阅读 43652 评论 0 赞 202
正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
388e473c fe2f 40e0 9301 e357ae8f1b41 茶点故事 阅读 51954 评论 3 赞 285
文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
8 开封第一讲书人 阅读 40381 评论 1 赞 210
那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
783c64db 45e5 48d7 82e4 95736f50533e 沈念sama 阅读 31687 评论 2 赞 310
文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
8 开封第一讲书人 阅读 30404 评论 0 赞 194
序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
783c64db 45e5 48d7 82e4 95736f50533e 沈念sama 阅读 34082 评论 1 赞 238
正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
388e473c fe2f 40e0 9301 e357ae8f1b41 茶点故事 阅读 30355 评论 2 赞 241
正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
388e473c fe2f 40e0 9301 e357ae8f1b41 茶点故事 阅读 31880 评论 1 赞 255
序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
783c64db 45e5 48d7 82e4 95736f50533e 沈念sama 阅读 28249 评论 2 赞 250
正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
388e473c fe2f 40e0 9301 e357ae8f1b41 茶点故事 阅读 32864 评论 3 赞 232
文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
8 开封第一讲书人 阅读 26007 评论 0 赞 8
文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
8 开封第一讲书人 阅读 26760 评论 0 赞 192
我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
783c64db 45e5 48d7 82e4 95736f50533e 沈念sama 阅读 35394 评论 2 赞 269
正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
388e473c fe2f 40e0 9301 e357ae8f1b41 茶点故事 阅读 35281 评论 2 赞 259
end_time: 2024-04-19 15:19:17 +0800 Completed in 181.426329ms