本项目是 V365 网络摄像机 Android 客户端,面向家庭看护、门店管理等远程监控场景,提供从设备接入、实时查看到事件追溯和多人共享的完整使用流程。
1. 软件功能与核心模块
设备管理:支持扫码添加、蓝牙配网、AP 热点连接、有线联网等接入方式,提供设备列表、在线状态展示、设备命名和删除。
实时监控:支持单目、双目、三目设备的视频展示,以及声音监听、语音对讲、截图、本地录像、清晰度切换、云台方向控制和补光灯设置,具体能力按设备开放。
录像回放:提供 TF 卡录像与云端录像查看,通过日期、录像列表或时间轴定位内容,并提供云录像下载和本地相册管理。
事件消息:展示报警通知及事件图片、视频,结合移动侦测和消息通知设置,帮助用户发现异常并回看现场。
共享与账户:提供二维码、手机号设备共享及邀请接收,支持账户注册登录、资料维护、密码修改和账户注销。
云服务:提供云存储介绍、套餐选择、微信及支付宝支付入口,并结合订单和设备能力判断服务状态。
2. 业务流程
用户登录后添加摄像机,完成联网配置、设备验证和信息保存;应用获取设备列表并建立连接,用户进入实时画面进行查看或控制。设备产生报警后,用户通过消息入口查看事件,并进入相关录像追溯;需要多人查看时发起共享,需要云端保存时购买对应设备的云存储套餐。
3. 主要功能路径
添加设备:设备页→添加→选择接入方式→联网或搜索→保存设备。
实时监控:设备页→摄像机画面→监听、对讲、截图、录像或云台控制。
录像追溯:实时页面→TF 卡回放/云回放→选择日期和录像;也可从设备卡片云回放入口进入。
报警配置:设备→设置→移动侦测/消息通知。
共享管理:设备共享入口或“我的→分享”→选择设备→发出邀请→对方接收。
云存储购买:云存储页→开通入口→套餐选择→支付。
本地内容:“我的→相册”→查看截图与录像。
1. 整体架构与设计思路
项目采用 Android 原生开发,以 MVVM 配合 Repository 分层组织。Activity、Fragment 负责页面展示和交互,ViewModel 管理页面状态,通过 LiveData、ObservableField 和 DataBinding 更新界面;HttpRepository、DeviceRepository、OssCloudRepository 分别承接服务端业务、设备通信和云文件访问。
系统围绕手机端、业务服务端、摄像机和对象存储协作:HTTP 接口负责账户、设备绑定、共享、套餐与订单;P2P 通道负责设备连接、控制命令及音视频传输;云端录像通过服务端获取 STS 临时凭证后访问阿里云 OSS。设备层抽象公共行为,并以单目、双目、三目实现适配不同镜头数量和协议差异。
2. 技术栈
主要使用 Java、AndroidX、ViewModel、LiveData、DataBinding;网络层使用 Retrofit、OkHttp、Gson,异步处理使用 RxJava3。音视频依赖 JNI 原生库、FFmpeg 相关库、自定义解码线程及 IJKPlayer 模块;辅助能力包括 ZXing 扫码、Glide 图片加载、蓝牙与 Wi-Fi 配网、多厂商推送、微信和支付宝支付。工程包含 app、日历控件和播放器相关模块,当前启用 mainland 渠道,最低支持 Android 8.0,目标 API 35,应用原生库打包限定 arm64。
3. 实现难点
多镜头设备需要协调多路画面、解码和回放速度;实时流、TF 回放、云回放切换时,需要正确停止旧任务并释放音视频资源。云录像可在设备离线时查看,代码因此将部分处理集中到设备仓储层。蓝牙及热点配网还涉及权限、网络切换、连接释放和机型兼容;设备异步响应与高频图像数据则需要处理线程切换、超时和背压。