HAC 入门
了解活字格 Android 容器(HAC)的定位、能力边界、运行方式和常用术语。
HAC 是什么
HAC 的全称是 Huozige Android Container,即活字格 Android 容器。可以把它理解为安装在运行 Android 8.0 及以上版本的手机、平板或工业 PDA 上的“运行壳”:它负责打开活字格 Web 应用,并在页面与设备硬件之间建立连接。
因此,页面不仅能完成普通 Web 页面能做的展示、录入和提交,还能在已配置和授权的设备上调用扫码头、定位、相机、NFC、BLE 和物理按键等能力。HAC 本身不承载业务规则或业务数据;这些仍由活字格应用处理,HAC 负责提供 Android 运行环境和设备能力桥接。
HAC 适合仓储、物流、门店、巡检和生产线等现场作业。它让同一套活字格业务页面可以在运行 Android 8.0 及以上版本的手机、平板或工业 PDA 上运行,同时保留设备厂商提供的硬件输入方式。
HAC 的整体工作关系
HAC 位于活字格 Web 应用和 Android 设备之间。开发人员在活字格设计器中安装所需插件并发布应用;设备上的 HAC 通过 WebView 打开应用页面;页面再通过插件命令请求扫码、定位、拍摄等设备能力。HAC 完成调用和结果传递,页面负责校验结果并保存业务数据。
其中,插件决定页面可以使用哪些交互命令,Android 系统权限和设备厂商配置决定这些命令能否真正执行。HAC、插件、WebView、Android 版本和 PDA 型号需要作为一个整体进行兼容性验证。
HAC 不是什么
- HAC 不是业务系统或应用服务器,不负责设计页面、执行业务规则或保存服务端业务数据;
- HAC 不是把活字格页面编译成原生 Android 页面,而是通过 WebView 加载 Web 应用;
- HAC 不是能够自动兼容所有 Android 设备的通用硬件驱动层,具体能力取决于设备硬件、系统权限、厂商配置和版本;
- HAC 不是完整的离线业务同步方案。离线数据的主键、幂等提交、补传和冲突处理仍需要由业务页面设计。
HAC 能做什么
| 能力类别 | 典型用途 |
|---|---|
| 页面容器 | 打开活字格应用、维持登录和页面导航 |
| 扫描输入 | 接收激光 / 二维码扫描头或 UHF / RFID 结果 |
| Android 能力 | 调用相机、麦克风、定位、NFC、BLE 和系统认证 |
| 现场交互 | 接收物理按键、广播、震动和提示音 |
| 应用辅助 | 离线暂存、文件访问、PDF 预览和蓝牙打印 |
具体命令、前提和异常处理见插件功能列表。
HAC 与普通浏览器
普通浏览器可以加载活字格 Web 应用,但不能直接访问 HAC 暴露的 Android 设备能力。页面需要根据运行环境决定是否显示扫描、定位、拍摄或其他硬件入口。
| 运行环境 | 可以做什么 | 不能假设什么 |
|---|---|---|
| 普通浏览器 | 页面展示、表单、网络请求和普通 Web 交互 | 不能假设能调用 PDA 扫描头、UHF、NFC、BLE 或系统认证 |
| HAC | 加载 Web 应用并桥接已配置的 Android 能力 | 不能假设每台设备都有相同硬件、权限或 WebView 版本 |
建议在页面初始化时识别运行环境;能力不可用时隐藏入口,或给出明确的备用操作。
运行边界
HAC 只负责容器和设备能力桥接,业务页面仍需要自己处理:
- 当前任务、对象、数量和提交状态;
- 权限拒绝、设备未配置、网络异常和服务端校验失败;
- 连续扫码、广播监听、BLE 订阅和物理按键监听的页面生命周期;
- 离线数据的业务主键、幂等提交、补传和冲突处理。
可以把一次现场作业理解为:
HAC 启动
-> 页面加载
-> 页面调用设备能力
-> HAC 返回结果
-> 页面校验并保存业务数据常用术语
| 术语 | 约定 |
|---|---|
| HAC | 活字格 Android 容器;后文统一使用 HAC |
| PDA | 工业手持终端或其他现场 Android 设备,不等同于 HAC |
| Android | 设备操作系统;版本和权限会影响 HAC 能力 |
| WebView | HAC 加载 Web 应用所依赖的 Android 组件 |
| 插件 | 在活字格设计器中安装、提供 PDA / Android 交互命令的扩展 |
| 命令 | 页面调用插件能力的具体操作,例如持续扫码或读取定位 |
| 广播 / Intent | 设备把扫描结果发送给 HAC 的系统通信方式 |
| 离线模式 | 页面导航或网络行为的控制;不等于完整的业务同步方案 |