Android设备中的Airplay

时间:2013-02-20 04:14:07

标签: android iphone ios airplay

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

mDNS -R MyAirplayService _airplay._tcp local 22555

当我运行这个java代码时,我可以在我的iOS设备上看到airplay图标。但它怎么可能在Android设备中?是否有任何开源代码或库来执行此操作?

3 个答案:

答案 0 :(得分:1)

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

  • 在iOS中,可以使用 Bonjour / NSNetService 来完成。请参阅Apple的官方教程。

    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中,可以使用 网络服务发现 来完成,官方示例如下:

    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应用程序,它可用作Airplay镜像服务器https://www.youtube.com/watch?v=0d6ggJMypIk。还有一个用python编写的开源项目,名为PyOpenAirMirror。

答案 1 :(得分:0)

如果我没弄错的话,Airplay是一款仅限Apple的API。我试过让它在android上被识别出来并且我基本上没有成功。您可能需要考虑流式音频的另一种传输模式。

答案 2 :(得分:0)

我会看看Erica Sadun的工具。我可能弄错了,但我认为它们是开源的。她为AirPlay写了一个服务器,播放器/发射器等。

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