安卓设备中的Airplay

Posted

技术标签:

【中文标题】安卓设备中的Airplay【英文标题】:Airplay in android device 【发布时间】:2013-02-20 04:14:06 【问题描述】:

我想构建一个 android 应用程序,其中 android 设备作为 airplay 服务器(接收器)和 ios 设备作为客户端(发送器)。我关注了this 链接。但是在这里,您必须首先使用以下命令注册到端口,以便在 iOS 设备上显示为 airplay 选项:

mDNS -R MyAirplayService _airplay._tcp local 22555

当我运行这个 java 代码时,我可以在我的 iOS 设备上看到 airplay 图标。但是如何在 android 设备中穿上它呢?是否有任何开源代码或库可以做到这一点?

【问题讨论】:

【参考方案1】:

该代码基本上是在本地网络中注册一个airplay tcp服务,以便同一本地网络上的任何其他iOS设备都可以发现该airplay服务,因此显示airplay图标作为选项。

在 iOS 中,这可以使用 Bonjour/NSNetService 来完成。请参考苹果官方教程。

NSNetService *service;
service = [[NSNetService alloc] initWithDomain:@""// 1
                            type:@"_airplay._tcp"
                            //this will show up as the airplay name
                            name:@"myiOSAirplayServer" 
                            port:port];
if(service)

    [service setDelegate:delegateObject];// 2
    [service publish];// 3

else

    NSLog(@"An error occurred initializing the NSNetService object.");

在 Android 中,这可以使用 Network Service Discovery 来完成,官方示例在这里:

public void registerService(int port) 
  NsdServiceInfo serviceInfo  = new NsdServiceInfo();
  //this will show up as the airplay name
  serviceInfo.setServiceName("myAndroidAirplayServer");
  serviceInfo.setServiceType("_airplay._tcp.");
  serviceInfo.setPort(port);

  mNsdManager = Context.getSystemService(Context.NSD_SERVICE);

  mNsdManager.registerService(
        serviceInfo, NsdManager.PROTOCOL_DNS_SD, mRegistrationListener);

但是,这样做只是在本地网络中注册服务,并在 iOS 设备中为您提供一个图标。要做真正的播放服务器/镜像服务,你需要做的还有很多。如果你想知道,请查看我的作为 Airplay 镜像服务器的 iOS 应用程序,https://www.youtube.com/watch?v=0d6ggJMypIk。还有一个用 python 编写的开源项目,叫做 PyOpenAirMirror。

【讨论】:

iOS 教程站点在这里:developer.android.com/training/connect-devices-wirelessly/… 和 Android 文档站点:developer.android.com/training/connect-devices-wirelessly/…【参考方案2】:

如果我没记错的话,Airplay 是 Apple 独有的 API。我试图让它在 android 上被识别,但我基本上没有成功。您可能需要考虑另一种流式音频传输模式。

【讨论】:

play.google.com/store/apps/details?id=eu.airaudio&hl=en 这是今天刚刚发布的 - 可能想看看。【参考方案3】:

我会看看 Erica Sadun 的实用程序。我可能弄错了,但我认为它们是开源的。她为 AirPlay 编写了服务器、播放器/发射器等。

http://ericasadun.com/category/airplayer/

【讨论】:

以上是关于安卓设备中的Airplay的主要内容,如果未能解决你的问题,请参考以下文章

这段 安卓软件中的代码中如何判断 手机是不是连接到 蓝牙设备

安卓应用、Android 8(.1)、90% 华为设备中的 ANR 和崩溃

如何编辑虚拟设备?安卓工作室-Java

这场意外里,安卓手机毫发无伤,苹果设备居然近乎全灭

使用蓝牙获取两个安卓设备之间的距离

WIFI-Direct(Wifi直连)AirPlayDLANMiracast功能介绍