在iPhone上,如果我创建自定义服务,例如“_test._tcp.local”。在Bonjour,我可以通过WiFi或/和蓝牙寻求/播放此服务。
在Android上有可能吗?
我知道有jmDNS,但从我的理解,它只能通过WiFi /网络, 不蓝牙。
由于
由Seva Alekseyev编辑,他提供了赏金:我不是在解决方法之后(比如Zeroconf sans Bluetooth或Bluetooth sans Zeroconf)。我追求真实的东西。
答案 0 :(得分:3)
不在蓝牙上,因为Android目前不支持蓝牙上的TCP / IP,并且Android的原生NSD支持(network service discovery)通过IP工作。
但是,它可以通过Wi-Fi工作。此外,Android支持通过Wi-Fi Direct进行服务发现,与蓝牙相比,它可以提供更大的范围和电池效率。有关如何将服务发现集成到wi-fi直接启用应用程序的指南,请查看Android Training lesson。此答案的部分内容已从我们的Dear Android video response复制到此问题
答案 1 :(得分:0)
您可以使用BluetoothSocket和BluetoothServerSocket通过蓝牙创建类似套接字的TCP。
以下是android dnssd的示例: https://github.com/twitwi/AndroidDnssdDemo
您可能需要修改jmdns库,以便在蓝牙打开时创建蓝牙套接字,否则创建简单的套接字。将套接字通信封装在另一个有条件地创建套接字的类中。
答案 2 :(得分:0)
有几个原因导致目前无法做到这一点。与您的问题最相关的一点是 - 正如您可能经历的那样 - jmDNS需要TCP / IP链接来发布或浏览服务(它需要绑定的IP地址)。正如其他答案&注释状态,您需要一个已建立的PANU链接,Android目前没有提供。
其他不起作用的原因是:
你可以考虑使用蓝牙4 LE - 至少有一个Apple API,从iOS 5开始提供Slave配置文件,并扩展为支持iOS 6中的Master配置文件。