【自荐】地震来袭,EEW Receiver 帮你第一时间获得通知

(注:EEW, Earthquake Early Warning. 紧急地震速报. 是指依托潜在震源地附近的地震台网,在震后数秒内快速估算地震影响范围和震害程度,在破坏性的S波和面波到达设防区域前发布警报的实时地震信息处理系统)

:office_building: 生活在高层公寓里,尤其是身处福州这样的东南沿海地带,我们常常会遇到一个令人无奈的场景:头顶的吊灯突然开始剧烈摇晃,逐渐站不稳。但手机屏幕却静如止水,完全不知道是不是需要避险。

虽然作为一个福建人,我们已经习惯了,也大概率能判断应该是台湾地区又发生了地震。但若震级够大,对于福建的民众仍然存在安全风险。只能在摇晃中慌忙拿起手机打开科学上网,连上台湾中央气象署官网,或YT的 台湾地震监视 直播频道了解信息。

直到震感消失几分钟后,微信的服务通知里才默默弹出一条消息:“中国台湾发生 X.X 级地震”

:warning: 对于这种类型的跨区域的震感传递,官方预警往往存在“盲区”,缺失必要预警推送;而对于分秒必争的逃生而言,被折叠在社交软件深处的通知毫无意义

:rocket: 为了解决这些痛点,我在AI的帮助下开发了 EEW Receiver —— 一款专为大陆安卓用户打造的、纯粹且极速的地震预警应用。

:police_car_light: 痛点一:福建震感明显,却总是收不到本地预警?

地理位置决定了沿海省份(尤其是福建)经常会受到台湾及周边海域强震的波及。然而,受限于行政区划和监测网的物理分布,像福建等地的本地地震台网,并没有对接台湾地区中央气象署的地震推送(似乎也完全不打算这么做)。

:light_bulb: EEW Receiver 的解法:多源并发订阅,抢出 30-60 秒黄金时间

EEW Receiver 接入了由 Wolfx Project 提供的优质 WebSocket 接口。在最新的版本中,App 支持多源并发订阅。你可以同时勾选台湾气象署(CWA,默认开启)、中国地震台网(CENC)以及福建地震局、四川地震局等本地数据源。当对岸发生强震时,App 能直接捕捉第一手测定报文。在破坏性地震波到达你脚下之前,为你争取到 30 秒甚至 1 分钟的宝贵避险时间。

:pushpin: 实例: 2026-03-12 20:14:14 台湾地区花莲县寿丰乡凤林镇 发生5.7级,最大震度4,深度20km的浅层地震。身在福州的我,第一时间收到了地震预警。且在1分多钟后,才开始感受到摇晃。我有充足的时间根据预警信息判断我是否需要采取避险措施,或是保持淡定。(例如根据下图预警信息和以往经验,我可以判断这个 距离/震级/深度 的地震,我将会感受到轻微摇晃,但无需惊慌)

全屏预警弹窗截图

:bell_with_slash: 痛点二:预警被塞进微信服务通知,根本看不到?

:light_bulb: EEW Receiver 的解法:系统级强提醒与全屏弹窗

目前市面上很多官方的小程序预警(中国地震台湾,福建地震局),极度依赖微信的推送通道。这导致了一个致命问题:**预警信息经常被折叠在“服务通知”的红点里。**当地震来临时,一层层点开微信查看又有什么意义?历经多年“台湾强震,福建强晃”的经历。他们没有任何一次弹出过全屏通知。而手机系统自带的地震预警也都是如此。

EEW Receiver 采用了最强硬也最直接的提醒方式:

  • :bell: 独立的高优先级通知渠道:绕开社交软件的折叠机制。

  • :collision: 息屏强制唤醒与全屏弹窗:当预估震级超过你设定的阈值(如 3.0 级)时,App 会直接点亮屏幕,无视锁屏状态弹出全屏红色警报,并伴随最高优先级的震动与警报音。不让你错过任何一次危急关头的提醒。(注意,这里的阈值指的是预警原始报文中的震级数,而非你当地实际感受的震级数。由于不同品牌手机OS的逻辑不同,需要稍微配置后才能实现)

:snail: 痛点三:没装谷歌框架,专业的预警 App 会延迟?

:light_bulb: EEW Receiver 的解法:直连 WebSocket 长连接,告别 FCM 依赖

如果你曾安装过许多境外开发者提供的地震预警应用(KNY 台灣天氣.地震速報,DPIP防灾 等),会发现很多优秀的 App 强依赖于 Google FCM (Firebase Cloud Messaging) 推送服务,或其他海外云服务的推送。在大陆的网络环境下,这类连接极不稳定,几秒钟的延迟在地震预警面前就是巨大的差距。而实际上这类应用在非科学网络环境下,可能存在完全没有推送,推送延迟数小时,甚至第二天才收到前一天发生的地震预警推送的尴尬情况。

为了解决这个问题,EEW Receiver 摒弃了第三方推送平台,直接通过 Android 官方认可的前台服务(Foreground Service)在后台维持一条轻量级的 WebSocket 长连接,与Wolfx Project的API连通(该API在大陆网络下可正常访问)。一旦你所勾选的地震局发布报文,数据直达你的手机,真正做到几乎零延迟

:gem_stone: 纯粹的预警工具:免费、开源、无广告

开发这款 App 的初衷,仅仅是为了在不可抗力的自然灾害面前,给自己和家人多争取几秒钟的时间。

  • :prohibited: 完全免费且无广告:目前没有任何广告,无需付费。

  • :floppy_disk: 本地记忆:所有的阈值设定、订阅源偏好全部存储在手机本地。

  • :unlocked: 代码完全开源:已在 GitHub 开放源码。

设置页面截图

近期预警记录页面截图

:memo: 结语与免责声明

本项目为一个无商业化目的的个人防灾测试项目。作为缺乏丰富软件开发经验的独立开发者,在 AI 的协助下完成了这款应用的架构与编码。目前可能还有许多不完善之处,请多海涵。

:inbox_tray: 下载地址https://github.com/evan8686/EEW-Receiver

务必仔细阅读Github仓库里的配置说明,并点击APP中的测试按钮,以确保APP能够后台保活,并正常进行全屏弹窗。不同手机OS的后台逻辑可能不同,请参考说明进行配置。

:stop_sign: 特别提示:地震预警(EEW)是一项极为复杂的科学工程,受限于监测网密度与算法极限,不排除存在误报、漏报的情况。本 App 强依赖 Wolfx API 及您所在环境的网络质量,请勿将其作为生命安全保障的唯一手段。收到警报时,请结合实际情况冷静判断并采取避险措施。

interesting

不过理论上来说系统内置的地震预警服务在中国大陆是够用了,中国地震台网还是很给力的<之前我去青岛玩凌晨三点突然报了个4级地震吓死我,看了一看是4级又躺下睡了 :doge:

你说的地震是指发生在大陆本身的地震。您的城市和我们这边存在完全不一样的情况!
你所在城市的推送原理
青岛和周边都是大陆境内,所有测站就是大陆内部地震监测网的一部分。你城市周边发生的地震,不存在跨境问题。是一个识别和直接推送的简单逻辑。

举个例子:假如淄博发生强震,将影响青岛。淄博本身就是大陆境内城市。淄博当地的测站检测到地震,就已经直接触发地震检测网络对周边受影响城市的推送。你在地震波抵达青岛之前就能收到。
而台湾岛花莲县发生强烈地震,花莲县的测站检测到地震,只会触发台湾地区内部的地震监测网,不会上报大陆监测网。需要等地震波抵达大陆这边的监测站,它识别后,才能计算出花莲发生了地震,并决定推送逻辑。而绝大多数情况下根本不触发推送。但福建沿海城市在面对这种情况的时候,常常震感是很明显的。

这样您能理解了吗?

25年12月底,台湾宜兰县那场大地震,我在福州,十几楼,已经摇的快像大风中湖面一艘小破船了。手机都没响。

原因:

  1. 台湾地区的地震预警系统和大陆并没有联网,台湾地区中央气象署推送地震预警的时候,不会接入大陆手机系统里内置的地震预警功能,或是中国地震台网的小程序,因此不会触发推送。
  2. 中国地震台网和福建地震台目前都没有计划通过某种途径接入台湾地区中央气象署数据。
  3. 台湾地区发生的地震,地震波传到离台湾最近的福建平潭岛基准站的时候,福州市区已经基本上感受到震感,完全不具备提前量。(也就是说地震波要到平潭岛了,触发平潭岛这边大陆的测站识别,才会推,但这个时候,整个福建震感都已经出现,那么也就没有提前量了。这个时候也可能导致推送系统判定震波已过,而就不推送了)

这也是我开发这个APP的目的。
这个APP的逻辑是
台湾地区境内的地震>震源地的测站检测到地震>触发台湾地区中央气象署对台湾地区自己内部的地震预警推送>这个推送也会第一时间就到APP用户的手机。

台湾东海岸的地震,地震波到福建大约会有30-60秒时间窗口。意味着在福建沿海的震感来临前,有足够预警窗口。收到预警后至少有30秒左右的时间才会感到摇晃。
如果等平潭或泉州的测站检测到地震,并触发推送,那么窗口期可能不足2秒。何况还大概率因为震波时序问题,易被识别为震波已过而压根不触发推送(即触发的时候,震波已经抵达相关城市,被系统认为已失去推送价值,从而没有推送)

这样讲,您还会认为中国地震台网的推送够用吗?

3 个赞

对我们这种够用了,您那边可能确实会在特殊情况下受影响,这种情况真没想过 :joy:

我这边可悲催了。手机自带的地震预警,中国地震台网小程序,福建地震台小程序。几乎从没弹过:woman_shrugging:
基本都是震感过去五六分钟了,wx的服务通知里静悄悄推一条正式测报。

已经安装EEW-Receiver v1.1.0 版本的朋友,记得更新一下v1.1.5
因为我自己发现了几个bug

EEW-Receiver v1.1.5 (已更新到github)
:police_car_light: 核心修复

防烧屏自动息屏机制:新增全屏弹窗 60 秒超时自动关闭逻辑。彻底解决夜间睡眠场景下,因未及时手动关闭弹窗导致屏幕长时间常亮、严重消耗电量及引发屏幕烧屏风险的问题。
(v1.1.0版本中存在若手机不在身边,或预警没有叫醒你的情况下,如果没有人为干预,全屏弹窗会一直亮着的问题。现在它在一定时间后就能够自己关闭)

:artist_palette:全屏弹窗 视觉与交互优化

· 色彩重构:调整全屏弹窗背景颜色,降低视觉刺眼感,提升界面质感。
(原来的纯红色看着确实有点辣眼睛还显得low)

· 警报音逻辑优化:由单次播放修改为精准的“循环播放两遍”后自动停止,增加提醒效果又避免过度扰民。
(因为其中一次小震,它真的没叫醒我,所以增加了警报时长)

· 脉冲式震动提醒:引入 5 秒脉冲震动模式(500ms 震动与停顿交替),有效提升警报的急促感与物理感知度。
(因为警报音时长增加了,震动也加长了,震动逻辑顺便优化了一下)

1 个赞

App更新报告:
EEW-Receiver v1.1.5
:police_car_light: 核心修复

防烧屏自动息屏机制:新增全屏弹窗 60 秒超时自动关闭逻辑。彻底解决夜间睡眠场景下,因未及时手动关闭弹窗导致屏幕长时间常亮、严重消耗电量及引发屏幕烧屏风险的问题。
(v1.1.0版本中存在若手机不在身边,或预警没有叫醒你的情况下,如果没有人为干预,全屏弹窗会一直亮着的问题。现在它在一定时间后就能够自己关闭)

:artist_palette:全屏弹窗 视觉与交互优化

色彩重构:调整全屏弹窗背景颜色,降低视觉刺眼感,提升界面质感。
(原来的纯红色看着确实有点辣眼睛还显得low)

警报音逻辑优化:由单次播放修改为精准的“循环播放两遍”后自动停止,增加提醒效果又避免过度扰民。
(因为其中一次小震,它真的没叫醒我,所以增加了警报时长)

脉冲式震动提醒:引入 5 秒脉冲震动模式(500ms 震动与停顿交替),有效提升警报的急促感与物理感知度。
(因为警报音时长增加了,震动也加长了,震动逻辑顺便优化了一下)

——-
EEW-Receiver v1.2.0

EEW Receiver v1.2.0 - 视觉与体验的全面跃升
本次更新是一次重大的 UI 与交互体验升级。我彻底重构了预警弹窗的排版布局,并对设置页面的空间利用和配置引导进行了深度优化,让它不仅“保命”,“好看”且“好用”。

:sparkles: 全新重构的预警弹窗 (Alert UI Overhaul)
重构弹窗界面:告别纯文字堆砌,引入半透明圆角数据卡片,大幅提升界面的高级感与层次感。

极速信息获取:重塑信息视觉层级。将“震级”与“烈度”提炼为超级视觉中心,使用超大字号并排显示,确保在被惊醒的极限状态下,关键求生信息能一秒入脑。

强迫症级排版细节:优化发震时间、深度等参数的垂直对齐方式;底部新增低干扰度的半透明 App 品牌水印。

底层数据分发优化:重写了 AlertManager 的传参逻辑,同一地震多报文连续推送时的丝滑刷新体验进一步提升。

:gear: 设置页面瘦身与交互升级 (Settings Optimization)
全新的折叠面板:API 订阅源(支持多选)区域改造为流畅的抽屉式折叠卡片。在保留多选灵活性的同时,极大缩短了设置页面的长度,告别冗长的滑动。

状态实时预览:即便在折叠状态下,面板头部也会直观显示“已选择 X 个数据源”,当前监控状态一目了然。

:open_book: 新增应用保活与权限配置指南 (Built-in Help Guide)
内置防杀后台教程:在设置页面右上角新增帮助说明入口。

详细梳理了确保预警 100% 触发所需的系统级权限(包括锁屏显示、后台弹出界面、忽略电池优化、多任务锁定等)。帮助新用户快速完成底层配置,彻底告别“漏报”烦恼。

最近几次台湾地区东部震级较大,福州有感的地震,EEW Receiver均在福州震感来临前60秒以上弹出预警