Android平台Airplay的实现方法

摘要:
Airplay是一种用于在LAN中的异构设备之间共享多媒体数据的通信协议。通常,小屏幕IOS设备被实现为Airplay客户端。如果Android机顶盒可以支持IOS设备的Airplay协议,并且可以接收和处理来自IOS设备、iPod和其他IOS设备的多媒体数据(视频、照片和音乐),则Airplay服务器:Wifi无线LAN 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协议去实现。

1 Airplay概念图

Airplay客户端:iPhone, iPad, iPod等IOS设备

Airplay服务器:iTV, Macbook, AndriodTVBox

网络:Wifi无线局域网

Airplay服务端包含的协议:DNS服务发现协议、HTTP协议、TCP/UDP协议、Airplay协议

Airplay服务端包含的服务:DNS服务发现服务、Airplay服务和Airtunes服务

Android平台Airplay的实现方法第1张Android平台Airplay的实现方法第2张

2 部分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

3 Android平台上Airplay的实现

Android平台Airplay的实现方法第3张

简要说明一下:实现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, 总会成功的。

4 感想

学会了Android平台Airplay的实现方法,屌丝设备能和高富帅设备交互,还是有一丝惊艳的。不过Airplay不是唯一技术,DLNA,WifiDisplay也有类似功能。

【编辑推荐】

  1. Android使用AIDL实现进程间通信
  2. Android获取屏幕像素

免责声明:文章转载自《Android平台Airplay的实现方法》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇解决bind错误 bind: Address already in use维护Panel的滚动条ScrollBars位置(C#)下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

Linux的SOCKET编程详解

Linux的SOCKET编程详解 1. 网络中进程之间如何通信 进 程通信的概念最初来源于单机系统。由于每个进程都在自己的地址范围内运行,为保证两个相互通信的进 程之间既互不干扰又协调一致工作,操作系统为进程通信提供了相应设施,如 UNIX BSD有:管道(pipe)、命名管道(named pipe)软中断信号(signal) UNIX syste...

ADB 你想找的命令都在这里

极力推荐文章:欢迎收藏Android 干货分享 阅读五分钟,每日十点,和您一起终身学习,这里是程序员Android 本篇文章主要介绍 Android 开发中的部分知识点,通过阅读本篇文章,您将收获以下内容: 一、ADB 简介 二、ADB的工作方式 三、ADB常用命令 一、ADB 简介 ADB(Android Debug Bridge) 是一个通用命令...

Win8.1安装配置64位Oracle Database 11g的详细图文步骤记录

一、安装建议 在开始Oracle数据安装之前建议:1.关闭本机的病毒防火墙。2.断开互联网。这样可以避免解压缩丢失文件和安装失败。 二、安装包准备 Step1 Oracle官网下载好Windows系统64位的安装包。 Step2 文件解压后有两个压缩包“win64_11gR2_database_1of2.zip”“win64_11gR2_database_...

CentOS7进程管理systemd详解

  概述: 系统启动过程中,当内核启动完成,后加载根文件系统,后就绪的一些用户空间的服务的管理工作,就交由init进行启动和管理,在CentOS6之前的init的管理方式都类似,相关的内容我们在之前的文章中也做出过介绍。在CentOS7上,init变成了systemd,其管理方式也发生了重大的变化,本章就跟大家欧一起探讨一些关于CentOS7上的sys...

【PCIE-4】---PCIE中部分概念或问题总结(很基础很重要)

前面三小节,介绍了PCIE的基本知识和概念,以及扫描流程。在不求甚解的情况下,我想各位小伙伴应该对PCIE有了个宏观的认识,OK,那么本章我们在之前的基础上,再单独把一些概念和更深层次的问题摘出来具体讨论。 首先依旧是国际惯例,先列问题:   1. PCIE的各个模块中,经常提到Bridge/Host Bridge,Root Complex, Root p...

Nacos 认证绕过

Nacos 介绍 Nacos 致力于帮助您发现、配置和管理微服务。Nacos 提供了一组简单易用的特性集,帮助您快速实现动态服务发现、服务配置、服务元数据及流量管理。Nacos 帮助您更敏捷和容易地构建、交付和管理微服务平台。 Nacos 是构建以“服务”为中心的现代应用架构 (例如微服务范式、云原生范式) 的服务基础设施。 漏洞成因: 1、未授权访问接口...