# 1. 打猎相机APP(WiFi单机版)设计文档 | 版本 | 时间 | 说明 | | ---- | ---- | ---- | | V1.0 | 2024-5-21 | 首次评审。 | | V1.1 | 2024-5-25 | 增加标准设置项和动态设置参数协议。 | | V1.2 | 2024-5-27 | 完善自定义协议描述。 | ## 1.1. 概述     打猎相机手机APP是用于查看相机的实时视频,回放保存在SD卡的MP4视频文件,以及对相机进行设置/管理。 **备注:** 本文基于六帧探APP现有功能,最小修改量实现APP的定制开发。 ## 1.2. APP功能详解 ### 1.2.1. 主页
替代文本
主页图示
  主页分三大块:相机管理,本地相册,更多(APP相关)。 #### 1.2.1.1. 相机管理 * 相机管理-添加设备   手机连接设备的AP热点后,自动搜索设备,并添加到设备列表。可多次添加多个设备,设备列表中可对设备进行删除。 * 相机管理-连接设备   APP只能连接当前WiFi设备,如果当前WiFi未发现设备,提示用户正确连接设备WiFi。连接设备后,跳转到设备管理页面。 #### 1.2.1.2. 本地相册
替代文本
本地相册图示
  本地相册可查找从相机下载到手机本地的文件(视频/图片)。“紧急”分类里面显示记录仪碰撞时的文件。   在打猎机的产品形态中,“紧急”分类显示PIR触发时拍摄的图片/视频。 #### 1.2.1.3. 更多   保持不变。 #### 1.2.1.4. 问题列表 1. 如果用户未对设备出厂设置进行修改,如何区分不同的设备? 答:通过wifi名称进行区分。 2. 如果APP面对多个出厂设备(设备信息完全一样),如何快速判断连接的是哪个设备? 答:音频互动。滴一声表示链接成功。 ### 1.2.2. 相机连接页   APP连接设备后,可手动开始/停止录像;可手动拍照。可跳转到相机文件/相机设置界面。
替代文本
相机连接图示
#### 1.2.2.1. 实时播放界面 * 实时播放rtsp视频流; * 可手动开始/停止录像; * 可手动拍照; #### 1.2.2.2. 相机文件   对相机端的文件进行分类显示。可下载到手机本地/删除/编辑等操作。
替代文本
设备端相册图示
##### 1.2.2.2.1. 设备端文件分类 1. PIR触发图片/视频; 2. 手动抓拍图片/视频; 3. 定时抓拍图片/视频; 4. 全部文件; **文件分类整改方案:**   目前APP支持的四种协议类型显示:循环/拍照/紧急/停车。打猎相机的分类定义为全部/PIR/手动/定时,根据协议进行一一对应回复,全部-循环,PIR-紧急,手动-拍照,定时-停车,在不修改协议的情况下,只需要修改APP的显示文字即可实现APP定制开发。 ##### 1.2.2.2.2. 相机设置   对设备的参数进行读取/修改。目前基于记录仪产品的设置内容无法满足打猎机产品需求。
替代文本
相机设置图示
**记录仪当前参数列表:** | 参数名称 | 数据类型 | 取值说明 | 公版支持 | 备注 | | ---- | ---- | ---- | ---- | ---- | | 记录仪WiFi名称 | ---- | ---- | 支持 | ---- | | 记录仪WiFi密码 | ---- | ---- | 支持 | ---- | | 固件版本 | ---- | ---- | 支持 | ---- | | 格式化存储卡 | ---- | ---- | 支持 | ---- | | 恢复出厂设置 | ---- | ---- | 支持 | ---- | **打猎机参数需求列表:**   **下述列表中,未支持的设置项作为标准设置项需求,APP在切换语言时需要做对应的翻译。** | 参数名称 | 数据类型 | 取值说明 | 公版支持 | 备注 | | ---- | ---- | ---- | ---- | ---- | | 记录仪WiFi名称 | ---- | ---- | 支持 | ---- | | 记录仪WiFi密码 | ---- | ---- | 支持 | ---- | | 固件版本 | ---- | ---- | 支持 | 仅显示 | | ---- | ---- | ---- | ---- | ---- | | 电量 | ---- | ---- | 未支持 | 仅显示 | | 工作模式 | 数字 | 0:图片
1:图片+视频 | 未支持 | ---- | | 连拍|数字 | 1/2/3 | 未支持 | 单位:P | | 连拍间隔 | 数字 | 0~60 | 未支持 | 单位:s | | 图片大小 | 数字 | 8/16/24/32/40 | 未支持 | 单位:M | | 录像分辨率 | 数字 | 0:WVGA
1:HD
2:FHD | 未支持 | ---- | | 录像帧率 | 数字 | 15/30 | 未支持 | 单位:fps | | 视频长度 | 数字 | 10/15 | 未支持 | 单位:s | | PIR延时 | 时间 | 00:00:00-23:59:59 | 未支持 | 两个PIR之间的最小间隔 | | 定时工作 | 时间 | 00:00:00-23:59:59 | 未支持 | 定时唤醒 | | 工作时间 | 时间 | 起始的时间设置
例如:起点20:00至终点6:00 | 未支持 | ---- | | 循环存储 | 数字 | 0:OFF
1:ON | 未支持 | ---- | | 红外灯功率 | 数字 | 0/1/2 | 未支持 | 低/中/高 | | PIR灵敏度 | 数字 | 0~9 | 未支持 | ---- | | 恢复出厂 | ---- | ---- | 支持 | 功能 | | 格式化SD卡 | ---- | ---- | 支持 | 功能 | | 重启 | ---- | ---- | 未支持 | 功能 | #### 1.2.2.3. 问题列表 1. 针对软件迭代需求,除了一些和APP业务逻辑相关的参数需要特殊处理外,是否可以通过协议来获取设备自定义的参数设置?方便设备可以随意的增加/删除设置参数。 答:==已经支持==,看协议能力。 2. 没发现升级功能。 答:公版APP不支持升级功能。 ## 1.3. APP定制整改总结   **基于WiFi公版基础,未修改原有协议,做界面显示定制和增量开发,方案可控。** 1. “记录仪”统一修改为“相机”; 答:需要定制。 2. 本地相册-“紧急”分类,改为“PIR”; 3. **新增标准的设置项,见前面描述:打猎机参数需求列表;** 4. APP连接设备后,自动录像,改为默认不录像,可手动录像; 答:设备返回非记录仪即可,见能力集。 5. APP上的“循环”改成“全部”,“拍照”改成“手动”,“紧急”改成“PIR”,“停车”改成“定时”,**全部包括手动/PIR/定时**; 6. **相机设置需要新增设备自定义设置项功能;** ## 1.4. 设置界面动态渲染方案设计   为了实现设置参数可自由定制,例如:可随意的增加/减少常见类型的参数设置。**此功能APP无需多语言翻译,直接显示协议字符即可**。 ### 1.4.1. 常见设置类型 | 参数类型 | 数据类型 | 取值说明 | 备注 | | ---- | ---- | ---- | ---- | | 显示参数 | ---- | 协议自定义 | 仅显示,无法修改 | | 开关 | 数字 | 只有0和1
0 - 关
1 - 开 | 只能设置开/关 | | 数字输入框 | 数字(带单位/取值范围) | 协议指定取值范围 | 手动输入 | | 任意输入框 | 无限制 | 无限制 | 手动输入任意字符 | | 时间 | 时间 | ---- | 设置时间 | | 功能 | 功能按钮 | 取消/确定 | 例如:格式化/恢复出厂/重启
可通过协议自由定义,协议带显示字符 | | 选项 | 数字 | ---- | 协议带选项对应的文字字符 | ### 1.4.2. 动态渲染设置界面 #### 1.4.2.1. 新增动态设置参数协议 **获取动态设置参数列表** | | | | ---- | ---- | | 描述 | 获取动态设置参数列表。 | | 接口 | http://192.168.1.100/app/getdynamicparam | | 参数 | ?index=all&language=xx // 获取全部动态设置参数
?index=6&language=xx // 获取索引号为6的动态设置参数 | | 参数说明 | index:设置项索引,all代表全部
language:APP当前语言,由六帧探定义值,设备根据该值回传对应语言的字符串 | | 返回参数 | result:0-成功,-1-失败
info:动态参数列表 | **获取全部动态参数返回示例:** ```code { "result": 0, // 0代表成功,-1代表失败 "info": [ { "name": "SettingName", // 直接显示在APP界面 "type": "label", // 显示控件类型,只显示 "value": "0-表示字符串", // 当前值 "index": 0 // 设置项索引,直接回传给设备 }, { "name": "NumberName", "type": "inputnum", // 数字输入框,带单位显示 "value": 123456789, "length": 9, // 输入字符最大长度 "unit": "s", // 单位,可选,如果有则显示单位 "index": 1 // 设置项索引,直接回传给设备 }, { "name": "SwitchName", "type": "switch", // 开关,0-关,1-开 "value": 0, // 当前值,0-关,1-开 "index": 2 // 设置项索引,直接回传给设备 }, { "name": "InputStringName", "type": "inputstring", // 任意字符(数字/字母/常见字符)输入框 "value": "0123abcDEF!@#", // 当前值 "length": 15, // 输入字符最大长度 "index": 3 // 设置项索引,直接回传给设备 }, { "name": "TimeSettingName", "type": "time", // 时间设置(24小时制),格式:hh-mm-ss "value": "23:59:59", // 当前值,格式:hh-mm-ss "index": 4 // 设置项索引,直接回传给设备 }, { "name": "ConfirmName", "tips": "Confirm?", // 提示信息,没有时使用name "type": "comfirm", // 功能按钮(确认框) "index": 5 // 设置项索引,直接回传给设备 }, { "name": "OptionName", "type": "option", // 选项设置 "items": ["Option0","Option1"], // 选项列表,格式:["选项1","选项2",...] "value": 1, // 当前值, 索引值,0-Option0,1-Option1 "index": 6 // 设置项索引,直接回传给设备 } ] } ``` 响应值描述: | 参数名 | 类型 | 描述 | | ---- | ---- | ---- | | name | String | 直接显示在APP | | type | String | 控件类型:
label-字符串,仅显示内容,无法修改
inputnum-数字
switch-开关(0-关,1-开)
inputstring-任意字符(数字/字母/常见字符)输入
time-时间设置
comfirm-功能按钮(确认框)
option-选项设置 | | value | ---- | 当前值,类型根据type定义来确定 | | length | int | 输入框的长度限制 | | unit | String | 单位,如果有则在APP界面显示 | | index | int | 索引值,设备使用,根据索引值知道修改哪个参数 | **动态设置项设置协议** | | | | ---- | ---- | | 描述 | 动态设置项设置协议 | | 接口 | http://192.168.1.100/app/dynamicparamset | | 参数 | ?index=1&value=0123456789 // 数字输入框
?index=2&value=0 // 开关,0-关,1-开
?index=3&value=0123abcDEF!@# // 任意字符输入框
?index=4&value=23:59:59 // 时间
?index=5&value=0 // 0-取消;1-确认
?index=6&value=1 // 0-Option0,1-Option1,以此类推 | | 返回参数 | result:0-成功,-1-失败
返回成功后重新获取动态参数显示 | **动态设置项设置返回示例:** ```code { "result" : 0, "info" : "success." } ``` **动态参数显示/设置UML时序图:** ```mermaid sequenceDiagram participant APP participant CAMERA APP ->> APP:进入设置界面 APP ->> +CAMERA:http:getdynamicparam?index=all&language=xx CAMERA -->> -APP:return loop 设置界面停留 opt 用户切换语言 note over APP: 语言切换后,APP重新获取动态参数 APP ->> +CAMERA:http:getdynamicparam?index=2&language=xx CAMERA -->> -APP:return end opt 用户修改参数 APP ->> APP:用户修改参数 APP ->> +CAMERA:http:dynamicparamset?index=2 CAMERA -->> -APP:return alt result=0 APP ->> APP:修改成功 APP ->> +CAMERA:http:getdynamicparam?index=2&language=xx CAMERA -->> -APP:return APP ->> APP:刷新设置项显示 else result=-1 APP ->> APP:修改失败 end end end opt 设备端修改参数 note over CAMERA: 设备端修改参数未能同步(未发现同步协议) end APP ->> APP:退出设置界面 ``` ### 1.4.3. 拓展规划   后续如何拓展为4G版本?