Tag: 服务发现

任何方式来发现您的networking上的Android设备?

我想能够发现我的networking上的Android设备,并可能检索有关它们的一些设备信息。 自从他们运行Bonjour服务以来,Apple设备非常简单。 但是,我似乎无法find任何类似的服务在Android上运行。 这必须在不修改Android设备,安装某些服务或打开某个端口的情况下工作。 它意味着以Bonjour帮助您find香草苹果设备的方式与香草Android设备一起工作。 即使能够validation设备运行Android也足够了。 已选答案 :虽然还不是最高评分的答案,但请看看Luis的回复。 正如他所提到的,您可以使用DNS查找(使用您的本地DNS服务器)来发现Android设备。 我发现这个有100%的成功率,因为​​Android强制设备使用android- _ ____的主机名。 即使电话根深蒂固,这在电话上显然是难以改变的。 所以我认为这是一个相当准确的方法。 谢谢,路易斯! Example: $ nslookup 192.168.1.104 192.168.1.1 Server: 192.168.1.1 Address: 192.168.1.1#53 104.1.168.192.in-addr.arpa name = android-711c129e251f14cf.\001. 示例代码:如果你想用Java实现这个(例如,在Android上运行),你不能轻易使用getHostName(),因为它使用外部DNS服务器。 例如,您想在路由器上使用本地DNS服务器。 路易斯在下面提到,你可以修改Wifi连接的DNS服务器,但这可能会打破其他的事情。 相反,我发现dnsjava库对发送有针对性的DNS请求非常有帮助。 以下是使用库的一些示例代码: String ipAddress = "104.1.168.192"; String dnsblDomain = "in-addr.arpa"; Record[] records; Lookup lookup = new Lookup(ipAddress + "." + dnsblDomain, Type.PTR); SimpleResolver resolver […]

如何以编程方式在Android上强制执行蓝牙低功耗服务发现,而不使用caching

我在Nexus 7上使用Android 4.4.2。我有一个蓝牙低功耗外围设备,当它重新启动时服务会改变。 Android应用程序调用BluetoothGatt.discoverServices()。 然而,Android只查询一次外设以发现服务,随后调用discoverServices()会导致第一次调用的caching数据,即使在断开连接之间也是如此。 如果我禁用/启用Android bt适配器,则discoverServices()通过查询外设来刷新caching。 有没有一种程序化的方式来强制Android刷新其可靠的服务caching而不禁用/启用适配器?