我是AllJoyn的新手,并且一直在尝试使用Java API开发兼容AllJoyn的应用程序。我浏览了所有示例Java和Android应用程序,我可以毫无问题地运行它们。但在所有样本中,我发现他们遵循客户/服务模型。在编译时,客户端必须知道服务实现的接口。以下是演示代码中的一些快照。
// From ObserverSample for Android
ProxyBusObject obj = (ProxyBusObject) msg.obj;
Door door = obj.getInterface(Door.class);
// From JavaSDKDocAboutClient
mProxyObj = mBus.getProxyBusObject (busName, "/example/path". sessionId.value, new Class<?>[] { SampleInterface.class});
我正在尝试开发具有某些Properties,BusMethods和BusSignals的服务。我希望这个服务可以从第三方AllJoyn应用程序(AllJoyn仪表板应用程序作为示例)中发现和控制,而不会让应用程序知道我的客户端界面。
我无法找到如何实现这一点,因为无论我在哪里,看来我将用于我的服务的接口,客户端必须知道它已经支持我的服务。从缩放的角度来看,这怎么可能?现在可能有许多服务或将来可能出现,已经知道它们的接口是不可行的。
如果有人可以请指出我可以找到有关开发此类服务的更多信息的资源,将会很有帮助。
提前谢谢。
答案 0 :(得分:0)
如果您的客户端Java应用程序没有关于服务接口的信息,那么您需要创建一个与您的Java部件通信并利用alljoyn内省的本机C ++库。 使用C ++,您可以通过编程方式调用方法或获取属性,而无需像使用Java那样对信息进行硬编码。
有关详细信息,请查看/ alljoyn_core / samples中的eventaction示例 https://git.allseenalliance.org/cgit/core/alljoyn.git/snapshot/alljoyn-16.04.zip