Android平台Airplay的实现方法
1 Airplay背景知识
Airplay属于局域网内异构设备之间分享多媒体数据的一种通信协议。Airplay设备有客户端和服务器之分,一般将小屏IOS设备实现为Airplay客户端,大屏幕设备实现为Airplay服务器。即iPhone, iPad, iPod一般为Airplay客户端,iTV, Macbook设计为Airplay服务器,在小屏和大屏之间分享视频、照片和音乐。Airplay属于私有协议,版权Apple公司所有。
IOS设备的保有量非常大,如果Android机顶盒能够支持IOS设备的Airplay协议,实现为Airplay服务器,能够接收和处理来自IOS设备的多媒体数据(视频、照片和音乐),将能提高Android机顶盒的竞争力。
技术点分析:Airplay服务器端包含3个服务:DNS服务发现服务;基于HTTP协议的Airplay服务和基于UDP的Airtunes服务。DNS服务发现服务,在linux系统中有开源的AVAHI库,其他两个服务需要基于Airplay协议去实现。
2 Airplay概念图
Airplay客户端:iPhone, iPad, iPod等IOS设备
Airplay服务器:iTV, Macbook, AndriodTVBox
网络:Wifi无线局域网
Airplay服务端包含的协议:DNS服务发现协议、HTTP协议、TCP/UDP协议、Airplay协议
Airplay服务端包含的服务:DNS服务发现服务、Airplay服务和Airtunes服务
3 部分Airplay开源代码(Android平台的较少哦)
Servers |
|||
Name |
Description |
Open |
|
AirServer |
The best app for turning your Mac into an AirPlay screen |
- |
|
Reflection |
Turn your Mac or PC into an AirPlay screen |
- |
|
Banana TV |
Another app to turn your Mac into and AirPlay screen |
- |
|
Casual Share |
Mac AirPlay receiever |
R |
|
AirMac |
Turns you Macintosh into an Airplay receiver (Objective C) |
R |
|
Airstream Media Player |
C# based AirPlay screen for windows and AirPlay server source code |
R |
|
Play2Wifi |
An AirPlay server written in Python |
R |
4 Android平台上Airplay的实现
简要说明一下:实现Airplay,最重要的有两步,第一步是:Airplay服务发布,让IOS设备能发现你;第二步:实现Airplay协议应答,让IOS设备能和你交互。Airplay发布服务,Linux系统中原生的Zeroconf协议,用于发布网络服务。Android平台上并不支持Zeroconf协议。所以需要安装Linux版本的Avahi,Avahi是Zeroconf协议的Linux实现。Avahi服务发布管理系统,支持跨进程发布,其中跨进程的数据交互是通过DBUS-Service的。DBUS服务,Android原生系统就自带。
上面介绍了一下系统库的依赖关系,下面介绍一下如何实现吧。
1 修改DUBS-Service(Andriod)服务的权限,默认是蓝牙才能访问,设置为系统级程序都可以访问。
2 编写一个新的服务【零配置网络发布服务ZeroconfAvahiService】,其中简单封装一下Avahi服务和Avahi-client。并在Android配置文件中,让该服务自启动。
3 AirplayServer程序中,创建Avahi-client,发布Airplay服务。如果IOS设备能发现您的Android设备,恭喜服务发布成功。
4 实现AirplayServer实现Airplay协议,完成与IOS设备的图像、视频数据的交互。Coding, Debugging, 总会成功的。
Android平台Airplay的实现方法相关推荐
- Unity跨iOS、Android平台使用protobuf-net的方法
--------------------------------------> dll预编译的方式使用protobuf http://www.ceeger.com/forum/read.php? ...
- Android平台 Psensor传感器调试方法
一. 驱动层调试 1.在板级dts文件中增加相应的dts代码, 如:调试sensor类,在代码中找到已经有的代码在修改,I2C使用那根(一般为I2C3),I2C地址(找datasheet或者FAE), ...
- android的反调试方法,Android平台融合多特征的APP反调试方法与流程
本发明涉及Android平台融合多特征的APP反调试方法,属于计算机与信息科学技术领域. 背景技术: 应用程序本身并不具备反调试的功能,但是动态调试是动态分析应用逻辑.动态脱壳等攻击方式所采取的必要手 ...
- 基于NDK编译Android平台的FFmpeg动态库
需求 FFmpeg在Linux平台(如Ubuntu)上的支持已经比较完善了,如前述文章介绍 http://blog.csdn.net/ericbar/article/details/73702061, ...
- cocos2d js调用java_【cocos2d-js官方文档】二十四、如何在android平台上使用js直接调用Java方法...
在cocos2d-js 3.0beta中加入了一个新特性,在android平台上我们可以通过反射直接在js中调用java的静态方法.它的使用方法很简单: var o = jsb.reflection. ...
- android camera 实时滤镜,【Camera】Android平台Camera实时滤镜实现方法
Android+JNI+OpenGL开发自己的美图秀秀 2016-01-18 16:39 阅读(5116) 评论(19) Android平台Camera实时滤镜实现方法探讨(十一)--实时美颜滤镜 2 ...
- android sdk 封装html5,Android平台以WebView方式集成HTML5+SDK方法
HTML5+ SDK 可以按照"独立应用"和"单页面"两种种方式进行集成,两种集成方式各有优点. 独立应用集成方式:即Widget集成方式,开发者在集成后可在需 ...
- android平台获取手机IMSI,IMEI ,序列号,和 手机号的方法
android平台获取手机IMSI,IMEI ,序列号,和 手机号的方法 1)获取运营商sim卡imsi号: String android_imsi = telephonyManager.getSub ...
- Rockchip Android平台GPU/DDR负载变频阈值调整方法
Rockchip Android平台GPU/DDR/CPU负载变频阈值调整方法 Rockchip Android平台GPU变频策略调整方法 GPU的变频策略默认是负载变频(simple_ondeman ...
最新文章
- 若依微服务版前端怎样在接口返回500时去掉一直弹窗提示服务未找到
- 张爱玲《小团圆》的备忘和感想 (一)
- 玩转 SpringBoot2.x 之缓存对象 | 原力计划
- found.000是什么,能删除吗
- 获取一个字符串在另一个字符串中出现的次数
- FeliCa简介____带命令协议说明
- NAND FLASH简介
- excel游戏_Excel集中游戏
- 第三阶段:数据存储与计算(离线场景):3.2 数据存储hdfs
- 制作删不掉的php唯读档,ppt母版logo删除不了怎么办
- 怎样对php手册解除锁定,word锁定怎么解锁
- Arcgis实例学习5--统计直方图、空间分布图、统计信息
- UE4母材质之法线贴图
- 深蓝英文字幕助手(一款看原声影片和英文字幕学英语的小软件)发布
- form 表单验证验证方法-validate-methods.js
- 线上教育相关的微信公众号图文这样排版,阅读量翻十倍!
- 2093321-19-6,PSMA-1007PSMA1007特异性膜抗原(PSMA)抑制剂
- Oracle spm
- c语言string 用法,C++中的String的常用函数用法总结
- CentOS镜像文件下载
热门文章
- Python+Pycharm+Anaconda安装步骤详解
- Python中float类型、float32类型和float64类型的表示精度,所需内存及其之间的转换
- LBM模拟方法学习篇1:安装Xshell和Xftp
- 使用PyLint分析评估代码质量
- 2021-11-21 根据身高 体重计算出bmi指数,检测自己是否属于肥胖
- OSI七层参考模型(开放式系统互联)
- Authing | 如何打造一个高效的分布式研发团队
- FOC开环驱动电机(开源小项目==FOC控制BLDC电机)
- 豆瓣电影TOP250爬取,并获得相关类型的推荐
- 如何将CAD图纸由DWG格式转换成PDF格式?