Android平臺(tái)Airplay的實(shí)現(xiàn)方法
Airplay屬于局域網(wǎng)內(nèi)異構(gòu)設(shè)備之間分享多媒體數(shù)據(jù)的一種通信協(xié)議。Airplay設(shè)備有客戶(hù)端和服務(wù)器之分,一般將小屏IOS設(shè)備實(shí)現(xiàn)為Airplay客戶(hù)端,大屏幕設(shè)備實(shí)現(xiàn)為Airplay服務(wù)器。即iPhone, iPad, iPod一般為Airplay客戶(hù)端,iTV, Macbook設(shè)計(jì)為Airplay服務(wù)器,在小屏和大屏之間分享視頻、照片和音樂(lè)。Airplay屬于私有協(xié)議,版權(quán)Apple公司所有。
IOS設(shè)備的保有量非常大,如果Android機(jī)頂盒能夠支持IOS設(shè)備的Airplay協(xié)議,實(shí)現(xiàn)為Airplay服務(wù)器,能夠接收和處理來(lái)自IOS設(shè)備的多媒體數(shù)據(jù)(視頻、照片和音樂(lè)),將能提高Android機(jī)頂盒的競(jìng)爭(zhēng)力。
技術(shù)點(diǎn)分析:Airplay服務(wù)器端包含3個(gè)服務(wù):DNS服務(wù)發(fā)現(xiàn)服務(wù);基于HTTP協(xié)議的Airplay服務(wù)和基于UDP的Airtunes服務(wù)。DNS服務(wù)發(fā)現(xiàn)服務(wù),在linux系統(tǒng)中有開(kāi)源的AVAHI庫(kù),其他兩個(gè)服務(wù)需要基于Airplay協(xié)議去實(shí)現(xiàn)。
1 Airplay概念圖
Airplay客戶(hù)端:iPhone, iPad, iPod等IOS設(shè)備
Airplay服務(wù)器:iTV, Macbook, AndriodTVBox
網(wǎng)絡(luò):Wifi無(wú)線(xiàn)局域網(wǎng)
Airplay服務(wù)端包含的協(xié)議:DNS服務(wù)發(fā)現(xiàn)協(xié)議、HTTP協(xié)議、TCP/UDP協(xié)議、Airplay協(xié)議
Airplay服務(wù)端包含的服務(wù):DNS服務(wù)發(fā)現(xiàn)服務(wù)、Airplay服務(wù)和Airtunes服務(wù)
2 部分Airplay開(kāi)源代碼(Android平臺(tái)的較少哦)
Servers |
|||
Name |
Description |
Open |
|
The best app for turning your Mac into an AirPlay screen |
- |
||
Turn your Mac or PC into an AirPlay screen |
- |
||
Another app to turn your Mac into and AirPlay screen |
- |
||
Mac AirPlay receiever |
R |
||
Turns you Macintosh into an Airplay receiver (Objective C) |
R |
||
C# based AirPlay screen for windows and AirPlay server source code |
R |
||
An AirPlay server written in Python |
R |
3 Android平臺(tái)上Airplay的實(shí)現(xiàn)
簡(jiǎn)要說(shuō)明一下:實(shí)現(xiàn)Airplay,最重要的有兩步,第一步是:Airplay服務(wù)發(fā)布,讓IOS設(shè)備能發(fā)現(xiàn)你;第二步:實(shí)現(xiàn)Airplay協(xié)議應(yīng)答, 讓IOS設(shè)備能和你交互。Airplay發(fā)布服務(wù),Linux系統(tǒng)中原生的Zeroconf協(xié)議,用于發(fā)布網(wǎng)絡(luò)服務(wù)。Android平臺(tái)上并不支持Zeroconf協(xié)議。所以需要安裝Linux版本的Avahi,Avahi是Zeroconf協(xié)議的Linux實(shí)現(xiàn)。Avahi服務(wù)發(fā)布管理系統(tǒng),支持跨進(jìn)程發(fā)布,其中跨進(jìn)程的數(shù)據(jù)交互是通過(guò)DBUS-Service的。DBUS服務(wù),Android原生系統(tǒng)就自帶。
上面介紹了一下系統(tǒng)庫(kù)的依賴(lài)關(guān)系,下面介紹一下如何實(shí)現(xiàn)吧。
(1) 修改DUBS-Service(Andriod)服務(wù)的權(quán)限,默認(rèn)是藍(lán)牙才能訪問(wèn),設(shè)置為系統(tǒng)級(jí)程序都可以訪問(wèn)。
(2) 編寫(xiě)一個(gè)新的服務(wù)【零配置網(wǎng)絡(luò)發(fā)布服務(wù)ZeroconfAvahiService】,其中簡(jiǎn)單封裝一下Avahi服務(wù)和Avahi-client。并在Android配置文件中,讓該服務(wù)自啟動(dòng)。
(3) AirplayServer程序中,創(chuàng)建Avahi-client,發(fā)布Airplay服務(wù)。如果IOS設(shè)備能發(fā)現(xiàn)您的Android設(shè)備,恭喜服務(wù)發(fā)布成功。
(4) 實(shí)現(xiàn)AirplayServer實(shí)現(xiàn)Airplay協(xié)議,完成與IOS設(shè)備的圖像、視頻數(shù)據(jù)的交互。Coding, Debugging, 總會(huì)成功的。
4 感想
學(xué)會(huì)了Android平臺(tái)Airplay的實(shí)現(xiàn)方法,屌絲設(shè)備能和高富帥設(shè)備交互,還是有一絲驚艷的。不過(guò)Airplay不是唯一技術(shù),DLNA,WifiDisplay也有類(lèi)似功能。