{"version":"0.1.0","code":"0000","result":true,"message":"处理成功","errdetail":"","timestamp":1671508995750,"data":{"id":71713981,"title":"17.5.1 通道代理","slug":"feprm9","format":"lake","bookId":26046811,"body":null,"body_draft":null,"body_html":"
说明:BL提供了两种通道模式,上文已经介绍过内置通道,本文主要介绍通道代理模式的实现和对接。
出于安全性考虑,部分项目希望由上层自行管理设备间的消息通信,因此可以使用多屏提供的通道代理能力完成AutoSDK多屏消息的输入输出。
int32_t com.autonavi.gbl.consis.model.ChannelService.init(ChannelInitParam initParam)
int com.autonavi.gbl.consis.model.ChannelService.addChannelProxy(IChannelProxyAdapter proxy)
int com.autonavi.gbl.consis.model.ChannelService.removeChannelProxy(IChannelProxyAdapter proxy)
int com.autonavi.gbl.consis.observer.IChannelProxyAdapter.writeData(byte[] data)
int com.autonavi.gbl.consis.model.ChannelService.HandleMessage(byte[] data, IChannelProxyAdapter proxy)
说明:函数详情,请复制函数名称到在线API搜索
/*< 获取通道服务实例 */\nChannelService mChannelService = (ChannelService)ServiceMgr.getServiceMgrInstance().getBLService(SingleServiceID.ChannelServiceID);\nif (mChannelService == null) {\n return false;\n}\n\n/*< 从配置文件等获取当前进程的主副屏属性 */\nboolean isMaster = getConfig("isMasterDisplay");\n\nChannelInitParam initParam = new ChannelInitParam();\ninitParam.isMaster = isMaster;\ninitParam.useInnerChannel = false;\n...//initParam其他参数配置\nmChannelService.init(initParam);\n\nif (isMaster)\n{\n\t/*< 创建主屏通道代理 */\n IChannelProxyAdapter proxyMain = new IChannelProxyAdapter();\n ...\n\n mChannelService.addChannelProxy(proxyMain);\n}\nelse\n{\n\t/*< 创建副屏通道代理 */\n IChannelProxyAdapter proxy = new IChannelProxyAdapter();\n \n\t/*< HMI在副屏自建通道连接到主屏 */\n ...\n\n\t/*< 添加通道到副屏 */\n mChannelService.appendChannelTransProxy(proxy);\n}