gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-02 03:09:58 25 4
gpt4 key购买 nike

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/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com