1. 概述
本文介绍在对接凌通GoPlus方案时的自定义功能点,以便更好适配业务功能,请有需要的方案商按此文档进行对接;
2. 自定义点:
2.1 [可选] 预览协议(TCP和UDP)识别
该字段定义当前app通过哪种方式(TCP 或 UDP) 去播放设备的实时画面;APP默认使用UDP,如果设备是TCP的预览,则需要实现如下接口;
- 设置项ID: 0X9009
- 响应值: “1” - TCP ,“0”- UDP(默认),注意此处的“1”是字符串,处理方式参考 wifi_name : 0X300
2.2 [可选]设备的mac地址
该字段是为了对设备进行区分,以便支撑其他的业务,请方案商尽量实现;
- 设置项ID: 0X9002
- 响应值:设备的mac地址字符串,比如”22AA32EEFF,注意此处的1是字符串,处理方式参考 wifi_name : 0X300
2.3 产品信息查询
该字段是每类设备的固定信息,写入固件的menu.xml中即可;
功能描述 获取设备对应的产品型号、品牌商,用以APP来进行接口类别区分,并给品牌商进行设备的logo的定制,需要区分设备型号和品牌
命令描述 通过menu.xml中进行解析获取 操作类型:查询
结果中增加字段(Type为:0x03) product(0x00009000):model@brand,举例:C029T@FISANG, sp(0x00009001):方案商的代号,名字由方案商自己定,用来区分方案商不同的接口,举例"LIANGCAI"
其中:
- 型号(model):本产品的型号,比如:C029T
- brand:品牌公司,直接销售产品的公司,即方案商的客户,比如:FISANG,如暂时没有定可以不填
- sp:方案商,举例:方案商名称为蓝天:"LIANGCAI",这个名称方案商自己定即可,有助于APP更好的对接方案商的方案接口;
在menu.xml中,增加如下,样例:
<Category>
<Name>ProductInfo</Name>
<Settings>
<Setting>
<Name>product</Name>
<ID>0x00009000</ID>
<Type>0x03</Type>
<Default>C029T@FISANG</Default>
</Setting>
<Setting>
<Name>sp</Name>
<ID>0x00009001</ID>
<Type>0x03</Type>
<Default>LIANGCAI</Default>
</Setting>
</Category>
2.4 设备能力集查询
该字段是每类设备的固定信息,写入固件的menu.xml中或是APP可以通过ID:0x00009003进行查询即可;
功能描述 获取当前设备类型某些能力,app做相应的功能匹配,以便不同设备能力更好的在app上给用户提供不同的功能;
命令描述 通过设置项ID进行查询, 操作类型:查询
结果中增加字段(0x00009003):
<Category>
<Name>ProductInfo</Name>
<Settings>
<Setting>
<Name>product</Name>
<ID>0x00009000</ID>
<Type>0x03</Type>
<Default>C029T@FISANG</Default>
</Setting>
<Setting>
<Name>sp</Name>
<ID>0x00009003</ID>
<Type>0x03</Type>
<Default>000011</Default>
</Setting>
</Category>
其中String自动的每一位代表1个业务能力(方案商实现时,如果对某位的业务不支持或是不了解,默认填0):
第0位:GPS数据业务
- 0 不支持GPS
- 1 仅支持下载后的视频文件GPS数据获取;
- 2 支持下载后的视频文件、在线回放的视频文件GPS数据获取;
- 3 支持下载后的视频文件、在线回放的视频文件、实时画面GPS数据获取;
- 4 支持下载后的视频文件、实时画面GPS数据获取;
第1位:1-运动相机,0-记录仪(默认)
第2位:1-不支持停车监控相册,0-支持停车监控相册(默认)
第3位:1-该设备支持通过APP操作文件加锁,0-不支持(默认)
第4位:1- 不支持删除加锁文件;0-支持删除加锁文件(默认); 如果有需求不能删除加锁文件,修改此字段;
第5位:部分芯片拍照需要切换到拍照模式的,1- 不切换模式,直接录像码流抓拍,0-(默认)切换模式进行抓拍或是当前默认方式
第6位:回放是否使用rtsp的流,
0-(默认)-不使用rtsp的流,使用文件下载播放的方式,
1- 使用RTSP的协议TCP播放回放实时流
2- 使用RTSP的协议UDP播放回放实时流; 如果部分设备回放码率特别大,wifi传输会造成回放卡顿,需要使用rtsp播放小码流时,可以修改此字段(回放是否支持rtsp还需要设备端支持);
第7位:是否支持拍照功能,0(默认)-支持拍照功能, 1- 不支持拍照,只支持录像;部分设备资源不够,不支持拍照功能时,修改此字段,app上将会隐藏拍照按钮;
第8位:是否支持APP修改wifi名或wifi密码
- 0(默认)- 支持修改WiFi名和WiFi密码,
- 1-不支持修改WiFi名,支持修改WiFi密码,此时WiFi名将会隐藏;
- 2-支持修改WiFi名,不支持修改WiFi密码,此时WiFi密码将会隐藏;
- 3.不支持修改WiFi名,且不支持修改WiFi密码,此时WiFi名和密码都将会隐藏;
第9位:0(默认)- 不支持文件拷贝,1-支持文件拷贝
第10位:是否使用其他非HTTP的方式下载设备视频文件,0(默认)-App自己决定下载策略,1-固定使用原厂sdk的方式下载设备视频文件,2-固定使用http下载设备视频文件,当前主要是针对杰理方案,非特殊需求,请使用默认值0
第n位:待补充
2.5 TF卡信息
原厂的协议里面没有定义TF信息,如果客户想定义TF信息在APP上显示,可以按如下定义: GPSOCK_General_CMD_GetDeviceStatus = 0x01; deviceStatus 的payload 中:
TF卡的在位状态定义:
- byte[15]: SD卡状态,0-未插卡;1-正常;2- 需要格式化,其他:其他异常
TF卡容量定义:
- byte[16-19]: 卡的剩余容量, 单位是KB (低位字节是数字的高位, 比如byte16 是卡剩余容量的 高8位)
- byte[20-23]: 卡的总容量, 单位是KB
2.6 当前录像文件加锁状态
该状态值配套设备支持通过app操作文件加锁(0x9100)使用,当设备支持app对录像进行加锁后,app需要知道当前设备是否处于录像加锁状态;通过GPSOCK_General_CMD_GetDeviceStatus的deviceStatus payload 中byte24定义
- byte[24]: 0- 当前文件正在加锁中,1- 当前文件未加锁;
2.7 多摄像头支持
当设备有多个摄像头时, APP需要知道当前摄像头的个数,以及设备当前用来预览的摄像头,通过GPSOCK_General_CMD_GetDeviceStatus的deviceStatus payload 中byte25-26定义
- byte[25]: 当前摄像头的个数,比如2个摄像头,值就是:2;
- byte[26]:当前预览的是哪个摄像头,序号从0开始,比如:当前观看的是第1个摄像头,值就是:0, 如果当前观看的是第2个摄像头,值就是:1
3.接口协议
凌通公版APP对设置项的处理是从menu.xml中读取、显示和设置,采用透传的方式,不解析具体的业务;
但我们的APP为了体验更好,会接管部分设置业务,如果menu.xml中的设置项的ID 和我们APP的业务对应不上,就会导致改设置项不可用;故本章进行设置项ID的规范化定义,满足规范的设置项ID可以正确的操作;
举例,比如是扬声器音量设置,其ID必须固定为0x00000001,这样APP就会把这个Setting的内容和[扬声器音量]这个对应起来:
本协议只要求ID 和我们定义的对应,其他项可以随意修改,比如 下面的例子中 [OFF、LOW、MID、HIGH] 改为 [OFF、LOW、MID、HIGH、VERY HIGH],都是可以的
<Setting>
<Name>音量</Name>
<ID>0x00000001</ID> // 针对ID进行标准化,和业务对应起来
<Type>0x00</Type>
<Default>0x03</Default>
<Values>
<Value>
<Name>OFF</Name>
<ID>0x00</ID>
</Value>
<Value>
<Name>LOW</Name>
<ID>0x01</ID>
</Value>
<Value>
<Name>MID</Name>
<ID>0x02</ID>
</Value>
<Value>
<Name>HIGH</Name>
<ID>0x03</ID>
</Value>
</Values>
</Setting>
本规范化主要是针对menu.xml中的ID进行规范,其他字段可以随便定义;
ID | 菜单类型 - | 对应业务项 - | 备注 |
---|---|---|---|
0x00000000 | 下拉选项 | 录制视频分辨率 | |
0x00000001 | 下拉选项 | 录像曝光补偿 | 对录像视频文件的曝光补偿 |
0x0000002 | 开关 | 移动侦测 | |
0x0000003 | 下拉选项 | 循环录影 | 循环录影的时长,比如1分钟、3分钟之类 |
0x0000004 | 开关 | WDR | 宽动态 |
0x0000005 | 开关 | mic开关 | 录制视频是否静音 |
0x0000006 | 开关 | 录制视频的时间水印 | 录制视频是否显示时间水印 ,只有 打开 或 关闭 |
0x0000007 | 下拉选项 | 行车碰撞灵敏度 | |
0x0000008 | 下拉选项 | 扬声器音量 | 扬声器的音量:关闭、高、中、低 |
0x00000009 | 下拉选项 | 缩时录影时长 | 停车监控时长,比如2H、12H、24H |
0x0000000A | 下拉选项 | 缩时录影帧率 | 一般指缩时录影帧率,比如 1fps、2fps |
0x0000000B | 下拉选项 | 停车监控模式 | |
0x0000000C | 下拉选项 | 停车监控碰撞灵敏度 | 停车监控是的gsensor事件 |
0x0000000D | 开关 | 停车监控开关 | 内容为: 打开 或 关闭 |
0x0000000E | 下拉选项 | 时间水印选项 | 支持多个选项的,比如:时间 、 时间+图标,注意和0x0000006区别 |
0x0000000F | 开关 | 缩时录影开关 | 内容为: 打开 或 关闭 |
0x00000010 | 下拉选项 | 屏幕保护设置项 | off:关闭 clockmode:时钟模式 darkmode:黑屏模式 具体的设置项依赖于设备xml中的定义,上面仅为参考 |
0x00000011 | 下拉选项 | 时间进制 | 12-hour:12小时制 24-hour:24小时制 |
0x00000012 | 开关 | 声控开关 | 是否启用声控功能 |
0x00000013 | 下拉选项 | 副屏屏幕保护设置项 | 当设备有第二块屏幕需要定义屏幕相关的操作,参考0x00000010 |
0x00000014 | 下拉选项 | 红外模式 | |
0x00000015 | 开关 | 私密拍照 | |
0x00000016 | 开关 | 红外灯自动检测 | |
0x00000017 | 开关 | 图像翻转 | |
0x00000018 | 开关 | 循环录像开关 | 是否支持循环录像,和0x0000003的区别时,此处是个开关 |
0x00000019 | 开关 | LED指示灯 | 机身上指示灯的开启和关闭 |
0x00000100 | 下拉选项 | 拍照分辨率 | |
0x00000101 | 下拉选项 | 拍照曝光补偿 | |
0x00000102 | 下拉选项 | 拍照质量 | |
0x00000103 | 下拉选项 | 拍照 Sequence | |
0x0001201 | 下拉选项 | 低电压调节 | |
0x0001202 | 开关 | 扬声器开关 | 注意和 0x0000008的区别,一个是开关,一个是下拉菜单 |
0x0001206 | 开关 | 图像上下翻转 | |
0x00000200 | 下拉选项 | 光源频率 | 50HZ 、60HZ |
0x00000201 | 下拉选项 | 进入屏保时间 | 针对带屏的设备 |
0x00000202 | 下拉选项 | 自动关机时间 | 断电之后多久关机,类似5S、10S、20S |
0x00000203 | 下拉选项 | 记录仪语言 | |
0x00000204 | 开关 | 按键音 | 蜂鸣器 |
0x00000205 | 下拉选项 | 设备的时间格式 | |
0x00000207 | 其他 | 格式化 | 格式化设备的TF卡 |
0x00000208 | 其他 | 恢复出厂设置 | 恢复出厂设置 |
0x00000209 | 其他 | 固件版本 | 获取设备的固件版本号 |
0x00000300 | 其他 | Wifi名称 | |
0x00000301 | 其他 | Wifi密码 | |
0x00009000 | 接口 | 产品信息 | 具体描述见2.3章节 |
0x00009001 | 接口 | 方案商的代号 | 为了更好的配合某个方案商的定制功能,具体描述见2.3章节 |
0x00009002 | 接口 | Mac地址获取 | 为了统计设备数目或是其他扩展功能,注意</br>此功能不要写死的menu.xml里面,会导致所有设备都是同一个ID,如果不好实现可以不支持该项 |
0x00009009 | 接口 | 实时预览的协议 | 具体描述见2.1章节 |
0x9100 | 接口 | 文件加锁 | app上提供按钮,可以操作对当前录制文件加锁 |
注:
上面的“开关”,是在只有ON 和 OFF两个选项,举例:
<Setting> <Name>录音开关</Name> <ID>0x0000006</ID> <Type>0x00</Type> <Default>0x00</Default> <Values> <Value> <Name>OFF</Name> <ID>0x00</ID> </Value> <Value> <Name>ON</Name> <ID>0x01</ID> </Value> </Values> </Setting>
下拉选项,只是有多个菜单项的,举例:
<Setting> <Name>行车碰撞灵敏度</Name> <ID>0x0000007</ID> <Type>0x00</Type> <Default>0x00</Default> <Values> <Value> <Name>OFF</Name> <ID>0x00</ID> </Value> <Value> <Name>LOW</Name> <ID>0x01</ID> </Value> <Value> <Name>MID</Name> <ID>0x02</ID> </Value> <Value> <Name>HIGH</Name> <ID>0x03</ID> </Value> </Values> </Setting>
- 接口: 表示APP内部调用查询使用,不是显示再设置项;
4. 国际化
menu.xml 中的
举例:
<Setting>
<Name>录音开关</Name>
<ID>0x0000006</ID>
<Type>0x00</Type>
<Default>0x00</Default>
<Values>
<Value>
<Name>OFF</Name>
<ID>0x00</ID>
</Value>
<Value>
<Name>ON</Name>
<ID>0x01</ID>
</Value>
</Values>
</Setting>
APP会使用 Name字段作为APP上的显示,这个字段如果是英文的,app会自动进行各种其他语言的翻译,以便和app当前的语言一致,如果不是英文,则直接显示该 Name字段的值,可能和APP的语言不一致,所以建议尽量用标准的英文;