3

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

mDNS -R MyAirplayService _airplay._tcp local 22555

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

4

3 回答 3

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 设备中为您提供一个图标。要做真正的播放服务器/镜像服务,你需要做的还有很多。如果您想知道这一点,请查看我的 iOS 应用程序,它用作 Airplay 镜像服务器,https://www.youtube.com/watch?v=0d6ggJMypIk。还有一个用 python 编写的开源项目,称为 PyOpenAirMirror。

于 2017-09-19T01:31:59.780 回答
0

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

于 2013-02-23T19:15:57.257 回答
0

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

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

于 2013-03-06T17:11:50.340 回答