zoukankan      html  css  js  c++  java
  • Android平台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服务

    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的实现

    简要说明一下:实现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获取屏幕像素
  • 相关阅读:
    [MacOS]Sublime text3 安装(一)
    [RHEL8]开启BBR
    PAT Advanced 1136 A Delayed Palindrome (20分)
    PAT Advanced 1144 The Missing Number (20分)
    PAT Advanced 1041 Be Unique (20分)
    PAT Advanced 1025 PAT Ranking (25分)
    PAT Advanced 1022 Digital Library (30分)
    PAT Advanced 1019 General Palindromic Number (20分)
    PAT Advanced 1011 World Cup Betting (20分)
    PAT Advanced 1102 Invert a Binary Tree (25分)
  • 原文地址:https://www.cnblogs.com/adodo1/p/4328196.html
Copyright © 2011-2022 走看看