Android软件开发技术在云起智控智慧照明系统中的应用

云起智控物联科技(武汉)有限公司
2022-10-05

 一、引言


 智慧城市照明管控覆盖市政道路、产业园区、文旅景区、老旧小区,照明配电柜、单灯控制器地理分布分散,外勤运维人员、市政巡检人员需要随时随地查看灯具运行状态、远程处置故障、临时调整亮灯方案。传统电脑B/S网页端受设备限制,外勤人员无法随身携带电脑,难以满足户外移动运维需求。Android系统凭借开源免费、硬件适配广泛、原生多线程、完整物联网通信组件、成熟本地存储能力等优势,成为移动管控客户端首选开发平台。

远程控制.jpg

 云起智控基于原生Android开发智慧照明专属手机APP,采用Kotlin结合Java混合开发,遵循MVVM分层架构,对接云端MQTT物联网服务,完整实现设备地图可视化、远程调光、故障实时推送、预案下发、能耗查询、设备扫码绑定等移动运维核心功能,与电脑B/S管理平台账号互通、数据实时同步。本文基于Android系统底层架构、原生开发技术,结合云起智控照明APP落地实践,从Android开发核心适配优势、APP整体分层架构、核心业务技术实现、系统协同价值、落地综合效益五大板块展开论述。


 二、Android开发适配智慧移动管控的核心技术优势


 Android系统基于Linux内核构建完整移动开发生态,对比H5混合开发、小程序方案,在城市照明外勤移动管控场景具备六大不可替代优势。


 第一,原生性能流畅稳定,支持后台长连接。Android原生Service后台服务可维持MQTT长连接,手机锁屏、后台运行时持续接收设备故障推送消息,H5网页后台易被系统回收,无法实现离线告警实时提醒,适配户外无人值守路灯故障即时通知需求。


 第二,完整硬件调用能力,支持扫码、定位。原生Android框架可直接调用手机摄像头扫码绑定控制器、GPS获取设备经纬度,快速完成现场配电柜点位录入,混合Web方案硬件调用权限受限,扫码、地图定位体验较差。


 第三,本地离线数据存储,弱网可用。依托SQLite轻量化本地数据库,APP缓存设备台账、历史故障、近七日能耗数据,郊外山区4G信号薄弱时,无需联网也可查看本地缓存运维记录,外勤人员无网络环境下正常开展巡检工作。


 第四,多线程并发调度,同步处理多任务。Dalvik虚拟机独立进程机制,可同时并行执行网络通信、UI刷新、本地数据存储、消息推送四大任务,批量控制上百盏灯具时界面无卡顿,满足片区批量调光操作需求。


 第五,系统兼容性覆盖广,适配各类外勤手机。Android支持4GB以上运行内存中低端外勤安卓设备,政府国产移动终端、普通运维手机均可正常安装使用,无需高端硬件设备支撑。


 第六,原生消息推送机制,故障主动弹窗。对接系统推送服务,设备短路、离线故障无需打开APP即可弹窗提醒,运维人员第一时间收到处置通知,大幅缩短夜间照明故障响应时长。


 三、云起智控智慧照明AndroidAPP整体分层架构


 云起智控智慧照明APP采用标准原生AndroidMVVM分层开发架构,区分底层系统层、基础工具层、数据仓库层、业务视图模型层、UI表现层,各层级完全解耦,独立开发迭代,适配后续新增单灯管控、人车联动等拓展功能。


 (一)底层Linux与HAL硬件抽象支撑层


 Android底层基于Linux内核,搭配HAL硬件抽象层隔离驱动与上层应用,APP硬件相关功能全部依托原生HAL接口实现:调用摄像头扫码读取控制器设备SN、调用定位模块采集配电柜地理坐标、访问手机存储缓存本地数据。底层内核提供稳定网络协议栈,支撑MQTT长连接持续收发照明控制指令,硬件驱动变更不会影响上层业务代码,APP兼容性大幅提升。


 (二)基础公共工具服务层


 封装全局基础服务与通用工具,作为APP底层支撑,包含五大核心组件:


 1.MQTT长连接后台Service:独立后台进程维持与云起云端物联网服务器通信,持续订阅设备状态、故障上报主题,下发开关、调光控制指令,网络断开自动重连,锁屏不中断消息接收;


 2.本地SQLite数据库服务:缓存项目设备清单、历史故障、能耗曲线、用户操作日志,弱网离线场景读取本地数据展示;


 3.权限管理工具:统一封装定位、相机、存储、后台运行动态权限申请,适配Android12及以上高版本系统权限管控规范;


 4.消息推送服务:对接系统推送通道,故障告警、平台通知离线弹窗提醒;


 5.网络请求工具:封装OkHttp请求框架,处理账号登录、数据报表、预案同步HTTP接口,自动缓存网络响应数据。


 (三)Data数据仓库层


 统一管理APP全部数据来源,分为云端远程数据、本地缓存数据两类,隔离网络与本地存储逻辑,上层业务无需区分数据来源。


 1.远程数据源:通过MQTT实时流、HTTP接口从云起智控ECS云端、Mongo时序库拉取设备在线状态、回路电气数据、月度能耗、定时预案、故障记录;


 2.本地数据源:SQLite数据库持久存储常用设备台账、近三十天故障、历史操作记录,SharedPreferences保存账号令牌、片区权限、APP界面配置;


 3.数据转换工具:云端JSON数据自动解析转换为本地实体对象,过滤异常空值、极值,避免界面展示错乱。


 (四)MVVM业务逻辑层


 APP核心业务处理层,分离UI与业务逻辑,包含ViewModel视图模型、Model业务实体两部分:


 ViewModel接收UI操作指令,调用数据仓库完成网络请求或本地查询,将处理结果分发至界面刷新;Model封装照明业务实体,包含控制器、单灯、故障、能耗、定时方案、账号权限六大数据模型。


 全部照明业务逻辑在此层实现,涵盖GIS地图点位加载、批量开关调光、定时预案编辑、故障筛选、能耗统计、设备扫码绑定、固件升级等功能,业务代码与界面完全分离,UI改版无需修改控制逻辑。


 (五)UI表现层


 采用AndroidXJetpack轻量化UI组件,扁平化轻量化界面设计,适配手机竖屏与平板横屏两种尺寸,划分八大核心页面:登录页、项目总览、设备控制页、GIS地图页、定时预案页、故障告警页、能耗数据页、个人权限设置页。


 页面仅负责展示数据、接收用户点击操作,不包含复杂业务运算,大量使用SeekBar调光滑块、状态标识卡片、折线图表原生控件,轻量化加载,低配外勤手机流畅运行。同时适配深色、浅色两套主题,户外强光环境下自动切换高亮界面,提升巡检可视性。


 四、Android原生开发技术在照明业务中的核心落地实现

系统架构图_05.png

 (一)MQTT后台长连接实时管控技术


 APP核心远程通信依托EclipsePahoMQTT原生Android客户端,封装独立后台Service,不受页面生命周期影响。手机锁屏、切换其他应用时,后台服务持续维持与云端TCP长连接,订阅设备状态、故障上报、指令反馈三类主题。


 运维人员在地图点击配电柜下发全开指令,APP通过MQTT发布主题推送控制报文,云端转发至现场4G照明控制器;灯具短路、离线故障设备上报数据实时推送至APP后台,触发系统弹窗推送,无需打开APP即可收到提醒。网络波动断开后Service自动执行重连机制,恢复通信同步断网期间遗漏故障消息,保证外勤人员故障零遗漏。


 (二)扫码与GPS现场设备录入技术


 基于Android原生Camera2相机框架开发扫码功能,无需第三方混合插件,直接扫描控制器机身二维码读取ProductKey、DeviceSN设备身份编码,自动发起设备绑定请求,外勤现场新增配电柜无需手动输入编号,大幅提升施工录入效率。


 调用系统定位HAL接口获取设备安装经纬度,同步上传云端GIS数据库,地图页面自动渲染点位,维修人员可根据导航直达故障灯具点位,解决野外无标识路灯难找的行业痛点。定位、扫码功能全部原生实现,不存在H5页面权限限制、卡顿闪退问题。


 (三)SQLite离线数据缓存技术


 针对郊外、山区4G信号弱的运维场景,APP内置SQLite本地轻量化数据库,采用分表存储机制:设备基础信息表存储片区所有控制器台账;故障记录表缓存30天告警数据;能耗表存储7天小时采样数据。


 外勤人员无网络进入片区巡检时,APP直接读取本地缓存展示设备历史故障、往日能耗,可离线编辑临时亮灯预案,恢复网络后自动同步至云端平台,完全适配偏远道路移动运维场景。数据库内置自动清理机制,超期历史数据自动删除,避免占用手机存储空间。


 (四)多线程并发调度处理批量控制


 AndroidDalvik虚拟机支持多独立线程,APP采用线程池机制并行处理大批量设备操作。片区数十台路灯批量调光、批量下发节假日预案时,开启多线程并发发送MQTT指令,单线程限制五条设备请求,防止网络拥堵造成指令丢失。UI刷新与网络通信分属独立线程,批量操作时页面可正常点击其他功能,不会出现页面卡死、无响应问题,提升外勤操作流畅度。


 (五)消息推送与故障告警原生实现


 整合Android系统推送服务,云端识别设备异常后下发推送消息,APP后台服务接收后弹出系统通知,包含故障路段、故障回路、故障类型,点击通知直接跳转对应设备控制页面。夜间路灯短路、线缆被盗等紧急故障可第一时间推送至运维手机,改变传统次日人工巡检才发现故障的滞后管控模式。同时推送支持权限区分,仅推送当前运维人员管辖片区故障,无关告警不打扰外勤人员。


 (六)多端数据同步协同机制


 APP账号、权限、设备数据与电脑B/S网页端完全互通,基于云端MySQL、MongoDB数据库统一数据源。电脑端新建节假日亮灯方案后,APP后台MQTT服务实时同步最新预案;手机端现场修复故障、修改设备参数,数据即时上传云端,网页端管理后台同步更新,实现办公室集中配置、外勤现场处置双向数据互通,一套账号全域管控。


 五、AndroidAPP与整套智慧照明系统协同价值

产品宣传画报 800.jpg

 (一)完善云-端-移动端完整闭环


 整套系统形成三层联动架构:现场ARM嵌入式照明控制器采集数据通过4G上传阿里云ECS云端;云端DMS数据管理系统、设备认证服务完成数据治理与身份校验;电脑B/S平台负责全局大数据分析、批量复杂配置;原生AndroidAPP承担户外外勤移动管控,填补办公室固定电脑无法现场运维的空白,完整覆盖室内统筹、户外巡检全场景。


 (二)弥补B/S网页端移动场景短板


 浏览器网页依赖网络,后台易被手机系统冻结,无法实现离线缓存、后台故障推送、硬件扫码定位;原生AndroidAPP依托系统底层权限,完美解决弱网巡检、离线查看、实时告警、现场设备录入四大外勤刚需,作为B/S平台移动端有力补充,形成双客户端协同管控体系。


 (三)轻量化部署降低项目运维门槛


 AndroidAPP安装包体积控制在30MB以内,无需复杂配置,外勤手机扫码即可下载安装,无电脑端部署、浏览器兼容问题。老旧安卓4GB内存运维手机均可正常运行,政府国产移动终端完美适配,区县、园区小规模项目无需采购专用运维平板,降低硬件配套投入。


 六、Android原生APP落地行业综合效益


 (一)大幅缩短故障处置时长


 传统模式故障依靠市民投诉、隔日人工巡检,响应时长可达12至24小时;搭载Android原生APP后,设备故障秒级推送外勤手机,运维人员实时获取故障位置、故障类型,可就近前往处置,故障平均处置时长压缩至30分钟以内,减少夜间道路照明盲区安全隐患。


 (二)降低外勤人工巡检成本


 运维人员携带安卓手机即可完成片区灯具巡检、设备录入、临时调光、故障处置,无需携带纸质台账、笔记本电脑,单次巡检人力效率提升70%;偏远山区、乡村道路无需定期全线巡查,APP故障精准定位,仅针对性前往故障点位,大幅缩减车辆、人工巡检开支。


 (三)适配全场景差异化运维需求


 市政主干道、产业园区、景区、老旧小区外勤运维需求各不相同,Android原生架构扩展性强,可按需新增单灯精细化管控、景观动态调色、光伏路灯电量监测等功能,无需更换底层开发框架,迭代开发周期短,快速适配各类照明改造项目。


 (四)适配国产化移动办公趋势


 当前各地城管、住建单位逐步普及国产安卓移动终端,原生AndroidAPP兼容统信、鸿蒙兼容安卓运行环境,不存在H5、小程序适配卡顿问题,满足数字政府、市政国产化办公政策要求,项目验收无需额外改造移动端程序。


 (五)长期迭代成本更低


 原生Kotlin+MVVM分层架构业务与UI解耦,后续新增AI故障预判、人车联动调光、多系统数据对接功能时,仅新增业务ViewModel模块,无需重构整体代码,相比混合H5方案长期迭代维护工作量降低50%,持续匹配十五五智慧城市照明升级需求。


 七、总结


 Android原生软件开发技术是云起智控智慧照明系统移动端核心支撑,依托Linux底层内核、HAL硬件抽象层、MVVM分层架构、MQTT长连接、SQLite本地缓存、原生硬件调用六大核心开发能力,打造轻量化、高性能、适配外勤弱网场景的专属照明管控APP。


 该安卓APP与云端ECS服务器、Mongo数据库、DMS数据治理平台、电脑B/S网页端、现场嵌入式照明控制器形成完整云边移动端协同闭环,弥补网页端移动运维短板,解决故障处置滞后、野外巡检不便、离线无数据、现场设备录入繁琐等行业痛点。


 在城市照明数字化转型进程中,Android原生移动客户端实现随时随地全域移动管控,有效降低运维人力、车辆成本,提升道路夜间照明安全保障能力;同时原生架构具备极强兼容与迭代能力,可持续拓展单灯管控、多场景联动等新型智慧照明功能,成为智慧城市照明外勤运维不可或缺的移动管控载体。


分享