java - AllJoyn:从发布的“关于”消息中获取众所周知的名称?

标签 java alljoyn

AllJoyn 中是否可以从远程设备发布的“关于”消息中获取其众所周知的名称?我想稍后使用众所周知的名称连接到设备,而无需新的发现过程。

我知道我可以从“关于”消息中获取设备 ID,但众所周知的名称似乎不同:

设备ID:558591fa-97db-464f-a8fa-efa30ecacc17

实际知名名称:net.allplay.MediaPlayer.i558591fa-97db-464f-a8fa-efa30ecacc17.r3X5_6mxu

虽然我可以对开头进行硬编码,但我在“关于”消息中找不到最后部分 (r3X5_6mxu)。我是否找错了地方,或者此信息根本不可用?

最佳答案

并非来自已发布的“关于”消息。

当您的应用收到公告时,您注册的 AboutListener 的announced() 方法将被调用:

announced(String busName, int version, short port,
        AboutObjectDescription[] objectDescriptions, Map<String, Variant> aboutData)

javadoc 中提到busName 参数是远程附件的众所周知的名称,但根据我的经验,busName 值是远程附件的唯一名称。并且 aboutData Map 参数不包含众所周知的名称,也不包含远程附件的唯一名称(就 aboutData 映射中的标准字段而言)。

但是,如果您希望将远程附件的众所周知与其唯一名称相关联(假设已发布众所周知的名称),那么也许您可以实现 BusListener 接口(interface)并将其注册到本地总线上。每次远程附件名称更改时,您的应用程序中都会调用以下 BusListener 方法:

nameOwnerChanged(String busName, String previousOwner, String newOwner)

busName 参数可以是远程附件的众所周知的名称(如果有的话,否则它将是其唯一的名称)。例如,当首次建立远程附件并分配名称时,将发送一条 nameOwnerChanged 消息(由您的应用程序接收),其中 previousOwner=NULL 且 newOwner=[UniqueName]。或者,例如,当远程附件终止时,将发送带有 previousOwner=[UniqueName] 和 newOwner=NULL 的 nameOwnerChanged 消息。通过这种方式,您可以看到远程附件的busName 和关联的newOwner 值。

通过在本地 BusAttachment 上调用 findAdvertizedName(String namePrefix) 来注册监听远程众所周知的名称前缀的兴趣。

关于java - AllJoyn:从发布的“关于”消息中获取众所周知的名称?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41202503/

相关文章:

android - 权限拒绝 : starting Intent from null (pid=30992, uid=2000) 未从 uid 10142 导出

android - AllJoyn 开源应用程序?

c++ - Xcode 5.1.1 中关于 AllJoyn 的构建错误(找不到 alljoyn/Version.h)

java - 使用response.body中的对象填充ArrayList

java - 字符串变量可以保存等于 10 MB 文本文件的数据吗?

java - hibernate 中的 BLOB

java - 如何将菜单项添加到现有的 Android 应用程序菜单?

java - 如何获取新阶段 Controller JavaFX 的句柄

android - 如何在 Android 中将 bin 文件传输到支持 Alljoyn 的开发板

java - AllJoyn BusSignalReply 错误