香港 HK SOS App 技术实现原理研究报告

一、HK SOS App 概述
1.1 基本信息
-
开发者:香港政府资讯科技总监办公室(OGCIO)联合消防处、香港海关等 -
推出时间:2022年6月15日正式推出 -
平台:iOS 和 Android -
下载:免费下载使用
1.2 主要功能
-
紧急求救:一键发送 SOS 求救信号 -
GPS 定位:获取并记录用户精确位置 -
离线地图:预下载香港山区地图 -
紧急联系人:预设紧急联络人 -
求救信息发送:包含位置、个人信息、紧急情况描述
1.3 使用场景
-
行山远足 -
海上活动(出海、潜水等) -
野外露营 -
偏远地区活动
二、无信号定位技术原理详解

2.1 GPS 定位原理(核心概念)
GPS 定位是否需要手机信号?答案:不需要!
GPS 工作原理:
GPS 卫星系统由三部分组成:
┌─────────────────────────────────────────────────────────────┐
│ 太空段:24-32颗GPS卫星在轨道上运行 │
│ 控制段:地面监控站追踪卫星 │
│ 用户段:GPS接收器(手机中的GPS芯片) │
└─────────────────────────────────────────────────────────────┘
定位过程(无需手机信号):
-
手机 GPS 芯片被动接收卫星信号(卫星单向广播) -
接收至少 4 颗卫星的信号 -
计算与各卫星的距离(通过信号传播时间) -
使用三角定位算法确定三维坐标(经纬度 + 海拔)
关键点:
-
GPS 卫星持续广播信号,不要求手机发送任何数据 -
手机只需接收卫星信号,不需要向卫星发送请求 -
这个过程完全不需要蜂窝网络或 WiFi 信号
2.2 离线地图技术

┌────────────────────────────────────────────────────────────┐
│ 离线地图架构 │
├────────────────────────────────────────────────────────────┤
│ 1. 预下载机制 │
│ ├─ 矢量地图数据(道路、路径、地标) │
│ ├─ 地形高程数据 │
│ ├─ 兴趣点(POI)信息 │
│ └─ 卫星影像(可选) │
│ │
│ 2. 本地存储 │
│ ├─ SQLite/Realm 数据库 │
│ ├─ 瓦片图片缓存 │
│ └─ 压缩矢量数据 │
│ │
│ 3. 渲染引擎 │
│ ├─ OpenGL ES / Metal │
│ ├─ 实时绘制地图 │
│ └─ 叠加 GPS 位置标记 │
└────────────────────────────────────────────────────────────┘
技术实现:
-
使用矢量地图格式(如 Mapbox Vector Tiles) -
数据压缩后存储在手机本地 -
运行时实时渲染,无需网络请求
2.3 位置信息的存储和发送机制
无信号时的处理流程:
┌─────────────────────────────────────────────────────────────┐
│ 无信号状态下的位置记录 │
├─────────────────────────────────────────────────────────────┤
│ │
│ 用户触发 SOS │
│ │ │
│ ▼ │
│ ┌─────────────┐ │
│ │ GPS 定位 │ ← 无需信号 │
│ │ 获取坐标 │ │
│ └──────┬──────┘ │
│ │ │
│ ▼ │
│ ┌─────────────┐ │
│ │ 本地存储 │ │
│ │ - 经纬度 │ │
│ │ - 海拔 │ │
│ │ - 时间戳 │ │
│ │ - 用户ID │ │
│ │ - 紧急程度 │ │
│ └──────┬──────┘ │
│ │ │
│ ▼ │
│ ┌─────────────┐ │
│ │ 尝试发送 │ │
│ │ (有信号?) │ │
│ └──────┬──────┘ │
│ │ │
│ ┌────┴────┐ │
│ │ │ │
│ ▼ ▼ │
│ 成功 失败 │
│ │ │ │
│ │ ▼ │
│ │ ┌─────────────┐ │
│ │ │ 进入队列 │ │
│ │ │ 后台监听 │ │
│ │ │ 信号恢复 │ │
│ │ └──────┬──────┘ │
│ │ │ │
│ │ ▼ │
│ │ ┌─────────────┐ │
│ │ │ 自动重发 │ │
│ │ └─────────────┘ │
│ │ │
│ └───────┴────────► 救援中心接收 │
│ │
└─────────────────────────────────────────────────────────────┘
2.4 卫星通信技术(HK SOS 不使用)
重要澄清:HK SOS 不是卫星通信设备!
|
|
|
|
|---|---|---|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
三、救援流程详解
3.1 用户触发 SOS 流程
┌─────────────────────────────────────────────────────────────┐
│ SOS 触发流程 │
├─────────────────────────────────────────────────────────────┤
│ │
│ 方式一:手动触发 │
│ ├─ 打开 App │
│ ├─ 点击 SOS 按钮 │
│ ├─ 确认发送 │
│ └─ 输入紧急情况描述(可选) │
│ │
│ 方式二:快捷操作 │
│ ├─ iOS: 长按 App 图标 → 快捷发送 │
│ ├─ iOS: SOS 紧急联络(按电源键5次) │
│ └─ Android: 紧急求救功能 │
│ │
│ 发送内容: │
│ ├─ 用户身份信息 │
│ ├─ GPS 坐标(经纬度) │
│ ├─ 海拔高度 │
│ ├─ 时间戳 │
│ ├─ 设备信息 │
│ └─ 电池电量 │
│ │
└─────────────────────────────────────────────────────────────┘
3.2 信号恢复后自动发送
// 伪代码:信号恢复自动发送机制
classSOSManager{
constructor(){
this.pendingSOS=null;
this.networkMonitor=newNetworkMonitor();
this.setupNetworkListener();
}
setupNetworkListener(){
this.networkMonitor.onConnect(()=>{
if(this.pendingSOS){
this.sendPendingSOS();
}
});
}
triggerSOS(){
// 1. 立即获取 GPS 位置(无需信号)
constlocation=GPS.getCurrentPosition();
// 2. 构建求救信息
const sosData ={
userId:this.getUserId(),
location:location,
timestamp:Date.now(),
battery:Device.getBatteryLevel(),
emergencyContacts:this.getEmergencyContacts()
};
// 3. 保存到本地(确保不丢失)
this.saveLocally(sosData);
this.pendingSOS= sosData;
// 4. 尝试立即发送
if(Network.isOnline()){
this.sendSOS(sosData);
}else{
// 进入后台监听模式
this.startBackgroundMonitoring();
}
}
startBackgroundMonitoring(){
// iOS: 使用 Background Tasks API
// Android: 使用 WorkManager / Foreground Service
// 持续监听网络状态变化
NetworkMonitor.startBackgroundMonitoring();
}
}
3.3 救援中心接收流程

┌─────────────────────────────────────────────────────────────┐
│ 香港救援指挥中心 │
├─────────────────────────────────────────────────────────────┤
│ │
│ ┌─────────────┐ ┌─────────────┐ ┌─────────────┐ │
│ │ 消防处 │ │ 警方 │ │ 飞行服务队 │ │
│ │ 指挥中心 │◄───►│ 通讯中心 │◄───►│ 搜救队 │ │
│ └──────┬──────┘ └──────┬──────┘ └──────┬──────┘ │
│ │ │ │ │
│ └───────────────────┴───────────────────┘ │
│ │ │
│ ▼ │
│ ┌─────────────────┐ │
│ │ 统一接警平台 │ │
│ │ HK SOS 系统对接 │ │
│ └────────┬────────┘ │
│ │ │
│ ▼ │
│ ┌─────────────────┐ │
│ │ 信息处理 │ │
│ │ - 定位解析 │ │
│ │ - 路径规划 │ │
│ │ - 资源调度 │ │
│ └─────────────────┘ │
│ │
└─────────────────────────────────────────────────────────────┘
四、技术架构
4.1 前端技术(移动端)
┌─────────────────────────────────────────────────────────────┐
│ HK SOS App 架构 │
├─────────────────────────────────────────────────────────────┤
│ │
│ ┌─────────────────────────────────────────────────────┐ │
│ │ UI 层 │ │
│ │ ├─ 主界面 (SwiftUI / Jetpack Compose) │ │
│ │ ├─ SOS 按钮 │ │
│ │ └─ 离线地图显示 │ │
│ └──────────────────────┬──────────────────────────────┘ │
│ │ │
│ ┌──────────────────────▼──────────────────────────────┐ │
│ │ 业务逻辑层 │ │
│ │ ├─ SOSManager(求救管理) │ │
│ │ ├─ LocationManager(定位管理) │ │
│ │ ├─ MapManager(地图管理) │ │
│ │ └─ NetworkMonitor(网络监听) │ │
│ └──────────────────────┬──────────────────────────────┘ │
│ │ │
│ ┌──────────────────────▼──────────────────────────────┐ │
│ │ 数据层 │ │
│ │ ├─ SQLite / Core Data(本地存储) │ │
│ │ ├─ Keychain(敏感信息加密存储) │ │
│ │ └─ UserDefaults(设置) │ │
│ └──────────────────────┬──────────────────────────────┘ │
│ │ │
│ ┌──────────────────────▼──────────────────────────────┐ │
│ │ 系统服务层 │ │
│ │ ├─ Core Location (iOS) / Fused Location (Android) │ │
│ │ ├─ Background Tasks API │ │
│ │ ├─ Push Notifications │ │
│ │ └─ Network Extension │ │
│ └─────────────────────────────────────────────────────┘ │
│ │
└─────────────────────────────────────────────────────────────┘
4.2 离线功能实现关键点
iOS 实现:
// 1. 后台定位权限
locationManager.allowsBackgroundLocationUpdates =true
locationManager.pausesLocationUpdatesAutomatically =false
// 2. 后台任务处理
classSOSBackgroundTask:BGTask{
funchandle(task:BGAppRefreshTask){
// 检查是否有待发送的 SOS
if pendingSOS &&Network.isReachable {
sendSOS()
}
scheduleNextRefresh()
}
}
// 3. 低功耗定位模式
locationManager.desiredAccuracy =kCLLocationAccuracyBestForNavigation
// 高精度定位(紧急情况)
Android 实现:
// 1. 前台服务(保持应用活跃)
class SOSForegroundService :Service(){
overridefunonStartCommand(intent: Intent, flags: Int, startId: Int): Int {
// 显示通知栏,持续运行
startForeground(NOTIFICATION_ID, notification)
return START_STICKY
}
}
// 2. WorkManager(后台任务)
val workRequest = PeriodicWorkRequestBuilder<SOSWorker>(
15, TimeUnit.MINUTES // 每15分钟检查一次
).build()
// 3. NetworkCallback(网络状态监听)
connectivityManager.registerNetworkCallback(
networkRequest,
object:NetworkCallback(){
overridefunonAvailable(network: Network){
if(pendingSOS !=null){
sendSOS()
}
}
}
)
4.3 后端架构
┌─────────────────────────────────────────────────────────────┐
│ HK SOS 后端架构 │
├─────────────────────────────────────────────────────────────┤
│ │
│ ┌─────────────┐ ┌─────────────┐ ┌─────────────┐ │
│ │ iOS App │ │ Android App │ │ Web Portal │ │
│ └──────┬──────┘ └──────┬──────┘ └──────┬──────┘ │
│ │ │ │ │
│ └────────────────┴────────────────┘ │
│ │ │
│ ▼ │
│ ┌───────────────┐ │
│ │ API Gateway │ │
│ │ (Kong/AWS) │ │
│ └───────┬───────┘ │
│ │ │
│ ┌────────────────┼────────────────┐ │
│ │ │ │ │
│ ▼ ▼ ▼ │
│ ┌─────────────┐ ┌─────────────┐ ┌─────────────┐ │
│ │ SOS Service │ │ User Service│ │ Map Service │ │
│ └──────┬──────┘ └──────┬──────┘ └──────┬──────┘ │
│ │ │ │ │
│ └───────────────┴───────────────┘ │
│ │ │
│ ┌───────────────┼───────────────┐ │
│ │ │ │ │
│ ▼ ▼ ▼ │
│ ┌─────────────┐ ┌─────────────┐ ┌─────────────┐ │
│ │ PostgreSQL │ │ Redis │ │ S3 │ │
│ │ (用户数据) │ │ (缓存/队列) │ │ (地图数据) │ │
│ └─────────────┘ └─────────────┘ └─────────────┘ │
│ │
│ ┌─────────────────────────────────────┐ │
│ │ 救援系统集成 │ │
│ ├─────────────────────────────────────┤ │
│ │ 消防处 CAD 系统 │ │
│ │ 警方指挥系统 │ │
│ │ 飞行服务队调度系统 │ │
│ └─────────────────────────────────────┘ │
│ │
└─────────────────────────────────────────────────────────────┘
4.4 数据传输协议
┌─────────────────────────────────────────────────────────────┐
│ 数据传输方案 │
├─────────────────────────────────────────────────────────────┤
│ │
│ 主要通信:HTTPS REST API │
│ ├─ 优点:广泛支持、穿透防火墙 │
│ ├─ 加密:TLS 1.3 │
│ └─ 端口:443 │
│ │
│ SOS 数据包格式: │
│ { │
│ "version": "1.0", │
│ "type": "SOS_ALERT", │
│ "timestamp": 1640000000000, │
│ "user": { │
│ "id": "encrypted_user_id", │
│ "name": "张三", │
│ "phone": "encrypted_phone", │
│ "emergencyContacts": [...] │
│ }, │
│ "location": { │
│ "latitude": 22.2783, │
│ "longitude": 114.1747, │
│ "altitude": 150.5, │
│ "accuracy": 5.0, │
│ "timestamp": 1640000000000 │
│ }, │
│ "device": { │
│ "model": "iPhone 14 Pro", │
│ "os": "iOS 16.5", │
│ "battery": 0.75 │
│ }, │
│ "message": "脚踝扭伤,无法行走" │
│ } │
│ │
│ 备选通信方案: │
│ ├─ 短信 SMS(作为备份) │
│ │ 格式: SOS|22.2783,114.1747|张三|扭伤 │
│ │ │
│ └─ iOS 紧急联络(系统级) │
│ 通过 112 / 999 自动发送位置 │
│ │
└─────────────────────────────────────────────────────────────┘
4.5 安全和隐私保护
┌─────────────────────────────────────────────────────────────┐
│ 安全与隐私措施 │
├─────────────────────────────────────────────────────────────┤
│ │
│ 1. 数据加密 │
│ ├─ 传输层:TLS 1.3 │
│ ├─ 存储层:AES-256 加密 │
│ └─ 敏感信息:Keychain (iOS) / Keystore (Android) │
│ │
│ 2. 身份验证 │
│ ├─ OAuth 2.0 / OpenID Connect │
│ ├─ 生物识别(Face ID / 指纹) │
│ └─ 政府身份验证(香港身份证) │
│ │
│ 3. 位置数据保护 │
│ ├─ 非紧急时不上传位置 │
│ ├─ 仅在用户触发 SOS 时发送 │
│ ├─ 数据保留期限制(如30天后删除) │
│ └─ 匿名化处理选项 │
│ │
│ 4. 合规性 │
│ ├─ 符合香港《个人资料(私隐)条例》 │
│ ├─ 数据存储在香港境内 │
│ └─ 定期安全审计 │
│ │
└─────────────────────────────────────────────────────────────┘
五、类似产品对比
5.1 全球主要 SOS 应用对比
|
|
|
|
|
|
|
|---|---|---|---|---|---|
| HK SOS |
|
|
|
|
|
| what3words |
|
|
|
|
|
| Garmin InReach |
|
|
|
|
|
| SPOT Gen4 |
|
|
|
|
|
| Zoleo |
|
|
|
|
|
| SOS Mobile (台湾) |
|
|
|
|
|
| 119 APP (日本) |
|
|
|
|
|
5.2 技术方案对比
┌─────────────────────────────────────────────────────────────┐
│ 无信号救援方案对比 │
├─────────────────────────────────────────────────────────────┤
│ │
│ 方案一:纯手机 App(如 HK SOS) │
│ ├─ 优点:免费、易用、无需额外设备 │
│ ├─ 缺点:必须有蜂窝信号才能发送 │
│ └─ 适用:信号不稳定的山区,而非完全无信号 │
│ │
│ 方案二:卫星通信设备(Garmin InReach 等) │
│ ├─ 优点:全球覆盖,完全无信号可用 │
│ ├─ 缺点:设备费+月费,成本较高 │
│ └─ 适用:偏远山区、海上、极地探险 │
│ │
│ 方案三:卫星手机 │
│ ├─ 优点:可通话+短信 │
│ ├─ 缺点:设备昂贵、月费高、体积大 │
│ └─ 适用:专业户外工作者 │
│ │
│ 方案四:北斗短报文(中国) │
│ ├─ 优点:无需地面基站,卫星直发 │
│ ├─ 缺点:需要专用设备,仅中国地区 │
│ └─ 适用:中国境内的偏远地区 │
│ │
└─────────────────────────────────────────────────────────────┘
5.3 技术优缺点分析
HK SOS 优势:
-
免费 – 政府提供,无费用 -
集成度高 – 直接对接香港救援系统 -
用户友好 – 界面简洁,一键求救 -
离线地图 – 可预下载山区地图 -
定位精准 – 使用 GPS + GLONASS + 北斗多系统
HK SOS 局限:
-
非卫星通信 – 必须有蜂窝信号才能发送求救 -
依赖手机 – 手机没电则完全失效 -
信号盲区 – 某些偏远山区完全无信号 -
网络依赖 – 数据传输需要数据网络
六、技术可行性分析
6.1 完全无信号时能否工作?
┌─────────────────────────────────────────────────────────────┐
│ 完全无信号场景分析 │
├─────────────────────────────────────────────────────────────┤
│ │
│ ┌─────────────────────────────────────────────────────┐ │
│ │ 完全无信号 │ │
│ │ = 无蜂窝网络 + 无 WiFi + 无卫星通信 │ │
│ └──────────────────────┬──────────────────────────────┘ │
│ │ │
│ ┌───────────────┴───────────────┐ │
│ │ │ │
│ ▼ ▼ │
│ ┌─────────────────┐ ┌─────────────────┐ │
│ │ 可以做 │ │ 不能做 │ │
│ ├─────────────────┤ ├─────────────────┤ │
│ │ ✅ GPS 定位 │ │ ❌ 发送 SOS │ │
│ │ ✅ 记录位置 │ │ ❌ 呼叫救援 │ │
│ │ ✅ 查看离线地图 │ │ ❌ 接收消息 │ │
│ │ ✅ 规划路线 │ │ ❌ 实时追踪 │ │
│ │ ✅ 显示坐标 │ │ ❌ 与外界通信 │ │
│ │ ✅ 保存轨迹 │ │ │ │
│ └─────────────────┘ └─────────────────┘ │
│ │
│ 结论: │
│ HK SOS 在完全无信号时可以定位,但无法发送求救信息! │
│ 必须等待用户移动到有信号区域,或由搜救队主动找到。 │
│ │
└─────────────────────────────────────────────────────────────┘
6.2 哪些环节必须有信号?哪些不需要?
┌─────────────────────────────────────────────────────────────┐
│ 信号需求分析 │
├─────────────────────────────────────────────────────────────┤
│ │
│ 功能 │ 是否需要信号 │ 原因 │
│ ────────────────────────┼──────────────┼───────────────── │
│ GPS 定位 │ ❌ 不需要 │ 卫星单向广播 │
│ 记录位置坐标 │ ❌ 不需要 │ 本地存储 │
│ 查看离线地图 │ ❌ 不需要 │ 预下载数据 │
│ 显示当前位置 │ ❌ 不需要 │ GPS 定位 + 本地渲染│
│ 规划路线 │ ❌ 不需要 │ 离线路径计算 │
│ 保存轨迹记录 │ ❌ 不需要 │ 本地数据库 │
│ ────────────────────────┼──────────────┼───────────────── │
│ 发送 SOS 求救 │ ✅ 必须 │ 需要网络传输 │
│ 呼叫 999/112 │ ✅ 必须 │ 需要蜂窝网络 │
│ 接收救援消息 │ ✅ 必须 │ 需要网络接收 │
│ 同步离线地图 │ ✅ 必须 │ 需要下载数据 │
│ 实时位置共享 │ ✅ 必须 │ 需要持续上传 │
│ 接收天气预警 │ ✅ 必须 │ 需要网络获取 │
│ │
└─────────────────────────────────────────────────────────────┘
6.3 对手机硬件的要求
┌─────────────────────────────────────────────────────────────┐
│ 硬件要求 │
├─────────────────────────────────────────────────────────────┤
│ │
│ 必须具备: │
│ ├─ GPS 芯片(支持 GPS + GLONASS + 北斗 + Galileo) │
│ ├─ 蜂窝网络模块(4G/5G) │
│ ├─ 足够存储空间(离线地图约 500MB - 2GB) │
│ └─ 电池容量(建议 2000mAh 以上) │
│ │
│ 推荐具备: │
│ ├─ 气压计(海拔高度辅助定位) │
│ ├─ 电子罗盘(方向指引) │
│ ├─ 防水防尘(IP67 以上) │
│ └─ 大屏幕(便于查看地图) │
│ │
│ 系统要求: │
│ ├─ iOS 14.0 以上 │
│ ├─ Android 8.0 以上 │
│ └─ 支持 Background Location / Foreground Service │
│ │
└─────────────────────────────────────────────────────────────┘
6.4 电量消耗情况
┌─────────────────────────────────────────────────────────────┐
│ 电量消耗分析 │
├─────────────────────────────────────────────────────────────┤
│ │
│ 功能 │ 耗电量(每小时) │ 优化建议 │
│ ──────────────────┼────────────────┼──────────────────── │
│ GPS 连续定位 │ 8-15% │ 仅 SOS 时使用高精度 │
│ 屏幕常亮 │ 10-20% │ 使用后自动关闭 │
│ 蜂窝网络待机 │ 1-3% │ 正常待机 │
│ 后台定位监听 │ 2-5% │ 低功耗模式 │
│ 离线地图渲染 │ 5-10% │ 减少刷新频率 │
│ ──────────────────┼────────────────┼──────────────────── │
│ 综合估算: │
│ 正常使用(待机):2-5%/小时 │
│ SOS 模式(高精度定位+屏幕):15-25%/小时 │
│ 紧急情况续航:约 4-6 小时 │
│ │
│ 省电建议: │
│ ├─ 平时关闭 GPS,仅在需要时开启 │
│ ├─ 预先下载离线地图,避免实时加载 │
│ ├─ 调低屏幕亮度 │
│ └─ 携带充电宝(建议 10000mAh 以上) │
│ │
└─────────────────────────────────────────────────────────────┘
七、完整技术流程图
7.1 正常使用流程
┌─────────────────────────────────────────────────────────────┐
│ HK SOS 完整使用流程 │
├─────────────────────────────────────────────────────────────┤
│ │
│ 1. 准备阶段(有网络时) │
│ ├─ 下载并安装 App │
│ ├─ 注册账户(香港身份证验证) │
│ ├─ 设置紧急联系人 │
│ ├─ 预下载离线地图 │
│ └─ 熟悉 SOS 操作流程 │
│ │
│ 2. 出发前 │
│ ├─ 检查电量(建议 80% 以上) │
│ ├─ 确认离线地图已下载 │
│ ├─ 测试 GPS 定位 │
│ └─ 告知亲友行程 │
│ │
│ 3. 活动中(可能无信号) │
│ ├─ App 后台运行 │
│ ├─ 定期获取位置(低功耗模式) │
│ ├─ 记录轨迹(可选) │
│ └─ 随时可触发 SOS │
│ │
│ 4. 紧急情况 │
│ ├─ 用户触发 SOS │
│ ├─ GPS 获取精确位置(无需信号) │
│ ├─ 本地保存 SOS 信息 │
│ ├─ 尝试发送: │
│ │ ├─ 有信号 → 直接发送 │
│ │ └─ 无信号 → 进入等待模式 │
│ └─ 信号恢复后自动发送 │
│ │
│ 5. 救援响应 │
│ ├─ 救援中心接收 SOS │
│ ├─ 确认位置和情况 │
│ ├─ 调派救援队伍 │
│ ├─ 尝试联系用户 │
│ └─ 实施救援 │
│ │
└─────────────────────────────────────────────────────────────┘
7.2 无信号场景处理流程
┌─────────────────────────────────────────────────────────────┐
│ 无信号时的处理策略 │
├─────────────────────────────────────────────────────────────┤
│ │
│ 场景一:用户在无信号区域触发 SOS │
│ │
│ ┌─────────────────────────────────────────────────────┐ │
│ │ 用户触发 SOS │ │
│ └──────────────────────┬──────────────────────────────┘ │
│ │ │
│ ▼ │
│ ┌─────────────────────────────────────────────────────┐ │
│ │ GPS 获取位置 ✓ │ │
│ │ - 纬度:22.2783 │ │
│ │ - 经度:114.1747 │ │
│ │ - 海拔:150m │ │
│ └──────────────────────┬──────────────────────────────┘ │
│ │ │
│ ▼ │
│ ┌─────────────────────────────────────────────────────┐ │
│ │ 本地保存 SOS 信息 │ │
│ │ - 加密存储到本地数据库 │ │
│ │ - 标记为"待发送"状态 │ │
│ └──────────────────────┬──────────────────────────────┘ │
│ │ │
│ ▼ │
│ ┌─────────────────────────────────────────────────────┐ │
│ │ 尝试发送 │ │
│ │ - 检查网络状态:无信号 ✗ │ │
│ │ - 显示"等待信号中" │ │
│ │ - 后台监听网络变化 │ │
│ └──────────────────────┬──────────────────────────────┘ │
│ │ │
│ ▼ │
│ ┌─────────────────────────────────────────────────────┐ │
│ │ 后台持续监听 │ │
│ │ - iOS: Background URL Session │ │
│ │ - Android: WorkManager │ │
│ │ - 检测到信号后立即发送 │ │
│ └──────────────────────┬──────────────────────────────┘ │
│ │ │
│ ▼ │
│ ┌─────────────────────────────────────────────────────┐ │
│ │ 用户移动到有信号区域 │ │
│ │ - 网络恢复 │ │
│ │ - 自动发送 SOS │ │
│ │ - 显示"已发送" │ │
│ └──────────────────────┬──────────────────────────────┘ │
│ │ │
│ ▼ │
│ ┌─────────────────────────────────────────────────────┐ │
│ │ 救援中心接收 │ │
│ │ - 接收位置信息 │ │
│ │ - 调派救援 │ │
│ └─────────────────────────────────────────────────────┘ │
│ │
│ 场景二:用户从未恢复信号 │
│ │
│ 这种情况下,HK SOS 无法发送求救信息。 │
│ 替代方案: │
│ ├─ 留下轨迹记录(如果开启了轨迹功能) │
│ ├─ 使用哨子、反光镜等传统求救方式 │
│ ├─ 等待搜救队寻找 │
│ └─ 建议:高风险区域携带卫星通信设备 │
│ │
└─────────────────────────────────────────────────────────────┘
八、总结与建议
8.1 核心技术原理总结
┌─────────────────────────────────────────────────────────────┐
│ 技术原理总结 │
├─────────────────────────────────────────────────────────────┤
│ │
│ 1. "无信号定位"的真实含义 │
│ │
│ GPS 定位 ≠ 需要 手机信号 │
│ GPS 定位 = 接收卫星广播信号(被动接收) │
│ │
│ 所以:在无手机信号的地方,GPS 定位依然有效! │
│ │
│ 2. HK SOS 的工作原理 │
│ │
│ 定位阶段:GPS 定位 → 无需信号 ✓ │
│ 存储阶段:本地保存 → 无需信号 ✓ │
│ 发送阶段:网络传输 → 需要信号 ✗ │
│ │
│ 3. 关键限制 │
│ │
│ HK SOS 不是卫星通信设备 │
│ 必须有蜂窝信号才能发送求救 │
│ 完全无信号时只能定位,无法求救 │
│ │
└─────────────────────────────────────────────────────────────┘
8.2 给用户的建议
┌─────────────────────────────────────────────────────────────┐
│ 使用建议 │
├─────────────────────────────────────────────────────────────┤
│ │
│ 适合使用 HK SOS 的场景: │
│ ├─ 香港郊野公园、行山径(信号不稳定但非完全盲区) │
│ ├─ 海边、离岛(大部分有信号覆盖) │
│ ├─ 短途户外活动(1-2天内) │
│ └─ 预算有限,不想购买卫星通信设备 │
│ │
│ 需要额外准备的场景: │
│ ├─ 偏远山区、深谷(可能完全无信号) │
│ ├─ 海上远航(超出基站覆盖) │
│ ├─ 长途探险(多日无人区) │
│ └─ 高风险活动(建议携带卫星通信设备) │
│ │
│ 建议搭配装备: │
│ ├─ 充电宝(至少 10000mAh) │
│ ├─ 哨子(国际求救信号:三短三长三短) │
│ ├─ 反光镜(日间求救) │
│ ├─ 头灯/手电(夜间求救) │
│ └─ 紧急联系卡(写明姓名、血型、过敏史) │
│ │
│ 高风险活动推荐: │
│ ├─ Garmin InReach(卫星通信+SOS) │
│ ├─ SPOT Gen4(卫星追踪器) │
│ └─ 北斗短报文终端(中国大陆地区) │
│ │
└─────────────────────────────────────────────────────────────┘
8.3 技术发展趋势
┌─────────────────────────────────────────────────────────────┐
│ 未来发展方向 │
├─────────────────────────────────────────────────────────────┤
│ │
│ 1. 手机直连卫星 │
│ - iPhone 14+ 支持紧急卫星通信(美国/加拿大) │
│ - 华为 Mate 60 系列支持北斗卫星消息 │
│ - 未来 HK SOS 可能整合卫星通信功能 │
│ │
│ 2. 蓝牙 Mesh 网络 │
│ - 多台手机之间可以组网 │
│ - 无信号时通过邻近手机中继传消息 │
│ - 适合人群密集的山区 │
│ │
│ 3. LoRa 远距离通信 │
│ - 低功耗长距离无线通信 │
│ - 可在无信号区域建立临时网络 │
│ - 需要额外的硬件设备 │
│ │
│ 4. AI 智能预测 │
│ - 根据用户轨迹预测可能遇险区域 │
│ - 提前下载该区域地图和天气信息 │
│ - 智能推荐安全路线 │
│ │
└─────────────────────────────────────────────────────────────┘
附录:常见问题解答
Q1: 完全无信号时 HK SOS 能救我吗?
答:不能直接求救。 GPS 定位可以工作,但无法发送求救信息。建议:
-
在安全地点等待信号恢复 -
使用传统求救方式(哨子、反光镜) -
让同行者到有信号处求救
Q2: 飞行模式下能用 GPS 吗?
答:可以! 飞行模式只是关闭蜂窝和 WiFi,不影响 GPS。开启飞行模式后再打开 GPS 定位即可。
Q3: HK SOS 会持续耗电吗?
答:后台运行时耗电很低(约 2-5%/小时)。 SOS 触发时高精度定位会增加耗电。建议携带充电宝。
Q4: 多久才能搜到 GPS 信号?
答:首次冷启动 2-5 分钟,热启动 10-30 秒。 在密林或山谷中可能需要更长时间。建议出发前预先获取定位。
Q5: 离线地图需要多大空间?
答:香港全境离线地图约 500MB-2GB。 建议仅下载计划活动区域的地图以节省空间。
夜雨聆风