Eagsen 鹰信 开发者平台


人车通信技术文档

.总体介绍

手机端与车机端的通信目前包含两种通道:局域网(socket)通道和外网通道(websocket)。消息发送是基于当前场景选择合适的通道发送消息。目前消息发送的类型有:文本,位置,语音,车辆分享,url链接,文件等。其中文件消息主要包括图片,其他类型的文件等。下面对上述的这些消息类型做详细的说明。

 

.消息类型

   1.文本消息

      此消息类型属于TEXT,不管当前是否连接局域网,这类消息统一走websocket即时消息服务通道。

      构建的消息体:

    {msg":"消息记录","img":"https:\\thirdwx.qlogo.cn\mmopen\vi_32\1nCwUjMtzQJd2VW7icMLXHApib1RYO2B0eBVCe9tJ0uqNOjpu9Us34FpWOzXI0sCNAeiaKpic9ySuthkfA7Dsp6Hyw\132","avatar":"James"}

其中msg 为发送的内容,img 为发送者的头像,avatar为发送者的昵称。

然后调用Mq服务发送消息(请参考Mq(webSocket)即时消息服务通道调用方法说明)

 2.车辆分享消息

    此消息类型属于SHARE,不管当前是否连接局域网,这类消息统一走websocket即时消息服务通道。

    构建的消息体:

 {msg:消息记录,img:https:\\thirdwx.qlogo.cn\mmopen\vi_32\1nCwUjMtzQJd2VW7icMLXHApib1RYO2B0eBVCe9tJ0uqNOjpu9Us34FpWOzXI0sCNAeiaKpic9ySuthkfA7Dsp6Hyw\132,avatar:James,bpname:车辆名字,"deviceid":"车辆设备id"}

其中msg 为发送的内容,img 为发送者的头像,avatar为发送者的昵称,bpname为分享的车辆名字,deviceid为分享的车辆设备id

然后调用Mq服务发送消息(请参考Mq(webSocket)即时消息服务通道调用方法说明)

 

3.文件消息

   此消息类型属于IMAGE,包括其他非图片类的文件都是统一定义为此类型。这类消息会根据当前的场景选择合适的消息通道发送。下面介绍下各自场景消息通道:

    3.1 局域网通道(socket)

          这类通道是先走socket发送文件流的模式到车机端指定的文件存储位置,发送完毕后,再通过webscoket通道发送即时消息。具体构建的消息体如下:

Socket通道构建的消息体:

 {client_app_id_":"eagsen_pi","command_parameter_":"","command_text_":"open_file_intent","executor_action_":"","executor_category_":"android.intent.category.DEFAULT","executor_type_":"NONE","file_category_":"PICTURES","file_name_":"/storage/emulated/0/splashAd/d557c152-3aa8-47ba-bc1e-55372d8884bf.png.jpg","id_":"1694135573783","message_body":"nobody","message_body_size_":"0","message_body_type_":"FILE","need_remote_response_":false}

其中需要客户端赋值的字段有:

command_text_字段 代表与车机端约定好的指令类型,不能随意更改。车机端收到该指令处理其逻辑。

 

file_category_ 字段 代表文件存储目录分类标识。目前目录分类标识有MOVIESMUSICPICTURESOTHERTEMPSYN

 

file_name_ 字段 文件名包含路径

 

message_body_type_ 字段 消息体类型,文件类固定为FILE

 

然后调用socket通道发送消息(请参考socket消息通道调用方法说明)

 

webSocket通道构建的消息体:

 

{msg:"d557c152-3aa8-47ba-bc1e-55372d8884bf.png.jpg","transferType":"local","img":"https:\/\/thirdwx.qlogo.cn\/mmopen\/vi_32\/1nCwUjMtzQJd2VW7icMLXHApib1RYO2B0eBVCe9tJ0uqNOjpu9Us34FpWOzXI0sCNAeiaKpic9ySuthkfA7Dsp6Hyw\/132","avatar":"James","url":"PICTURES\/d557c152-3aa8-47ba-bc1e-55372d8884bf.png.jpg","filetype":"image\/jpeg","filename":"d557c152-3aa8-47ba-bc1e-55372d8884bf.png.jpg","filesize":"1.46M"}

重要字段说明:transferType 代表文件传输的类型,根据不同消息通道场景传不同的传输类型,主要有 local socket传输类型,remote websocket传输类型。

 

最后调用Mq服务发送消息(请参考Mq(webSocket)即时消息服务通道调用方法说明)

 

 

3.2 webSocket即时消息服务通道

    这类通道是在局域网未连接的情况下会触发。先上传文件到oos服务,上传完毕后,再通过webSocket即时消息服务通道发送消息。

构建的消息体 请参考局域网消息通道之webSocket通道构建的消息体,唯一的区别就是transferType 传入的是remote类型。

最后调用Mq服务发送消息(请参考Mq(webSocket)即时消息服务通道调用方法说明)

 

以上两种通道文件发送,在车机端都会触发文件自动打开。

 

4.语音消息

   在业务层面上看,被定义为一个独立的消息类型属于VOICE。但是基于语音本质上也是一个录音文件,因此也符合文件消息范畴,共文件消息发送业务逻辑。语音目前没有在车机端收到后直接播放,只在聊天页面里面点击语音播放。具体请参考文件消息类型说明,构建消息体唯一的区别就是webSocket消息通道下,语音消息会新增一个字段second 语音时长。

 

5.位置消息

    此类消息类型属于LOCATION。这类消息会根据当前的场景选择合适的消息通道发送。跟文件消息有点区别,不同的是位置消息是先调用webSocket通道发送即时消息,然后再判断 a.当前是否局域网连接 b.终端id是否是车机 c.当前显示的车机是否与当前连接的车机一致 同时满足abc三个条件即调用socket消息通道发送消息。

 

5.1 webSocket即时消息通道构建的消息体:

{msg":"未来社区","img":"https:\/\/thirdwx.qlogo.cn\/mmopen\/vi_32\/1nCwUjMtzQJd2VW7icMLXHApib1RYO2B0eBVCe9tJ0uqNOjpu9Us34FpWOzXI0sCNAeiaKpic9ySuthkfA7Dsp6Hyw\/132","avatar":"James","title":"(乐都)未来社区","address":"上海市xxxxxxxx号楼","latitude":31.016136,"longitude":121.211341}

 

除了发送者基本信息外,主要携带了位置信息。

 

最后调用Mq服务发送消息(请参考Mq(webSocket)即时消息服务通道调用方法说明)

5.2 socket通道构建的消息体:

 {client_app_id_":"eagsen_pi","command_parameter_":"","command_text_":"open_map_intent","executor_action_":"","executor_category_":"android.intent.category.DEFAULT","executor_type_":"NONE","file_category_":"TEMP","file_name_":"","id_":"1694139521303","message_body":"{\"url\":\"\",\"name\":\"未来社区\",\"latitude\":\"31.016136\",\"longitude\":\"121.211341\"}","message_body_size_":"0","message_body_type_":"JSON","need_remote_response_":false}

 

 

其中需要客户端赋值的字段有:

command_text_字段 代表与车机端约定好的指令类型,不能随意更改。车机端收到该指令处理其逻辑。

 

file_category_ 字段 代表文件存储目录分类标识。目前目录分类标识有MOVIESMUSICPICTURESOTHERTEMPSYN

 

message_body 字段 代表消息体,此处是位置信息

 

message_body_type_ 字段代表消息体类型,位置信息固定为JSON类型

 

最后调用socket通道发送消息(请参考socket消息通道调用方法说明)

 

 

6.url链接消息:

 

此类消息类型属于URL。这类消息会根据当前的场景选择合适的消息通道发送6.1 webSocket通道构建的消息体

   {msg:"url链接","img":"https:\\thirdwx.qlogo.cn\mmopen\vi_32\1nCwUjMtzQJd2VW7icMLXHApib1RYO2B0eBVCe9tJ0uqNOjpu9Us34FpWOzXI0sCNAeiaKpic9ySuthkfA7Dsp6Hyw\132","avatar":"James"}

字段说明请参考文本消息。

 

最后调用Mq服务发送消息(请参考Mq(webSocket)即时消息服务通道调用方法

说明)

 

6.2 socket通道构建的消息体:

{client_app_id_":"eagsen_pi","command_parameter_":"","command_text_":"open_url_intent

,"executor_action_":"","executor_category_":"android.intent.category.DEFAULT","executor_type_":"NONE","file_category_":"TEMP","file_name_":"","id_":"1694139521303","message_body":"{\"url\":\"url链接\"}","message_body_size_":"0","message_body_type_":"JSON","need_remote_response_":false}

 

其中需要客户端赋值的字段有:

command_text_字段 代表与车机端约定好的指令类型,不能随意更改。车机端收到该指令处理其逻辑。

 

file_category_ 字段 代表文件存储目录分类标识。目前目录分类标识有MOVIESMUSICPICTURESOTHERTEMPSYN

 

message_body 字段 代表消息体,此处是url链接

 

message_body_type_ 字段代表消息体类型,位置信息固定为JSON类型

 

最后调用socket通道发送消息(请参考socket消息通道调用方法说明)

 

 

 

 

.消息通道

    1.socket消息通道调用方法

ClientUtils.getInstance().requestEagvis(entity, sendCallback)

 

其中参数entity 就是构建的消息体对象MessageHeaderEntity ;参数sendCallback 发送回调事件监听。

 

2. Mq(webSocket)即时消息服务通道调用方法

 

MqClient.getInstance().send(String targetId, String senderDevId, Constant.MessageType messageType, JSONObject jsonObject

)

其中messageType为消息类型,请参考前面第二部分消息类型有具体消息类型说明,jsonObject为构建的消息体,请参考前面第二部分消息类型的构建消息体说明。

关键字:#消息# #通道# #消息体# #发送# #调用#

- End - 

关于 鹰信 Eagsen

秉持“移动的智能空间”理念,致力于汽车信息化、智能化研究,引领"人车通信"、"车车通信"的发展方向。

相关文章