手机 GPS
├── ADS-B / OpenSky等网站公开航班数据
├── 最近机场 METAR 气象短报文
├── OpenStreetMap / RainViewer 图层
└── 本地雷达、飞行面板和飞行日志
- GPS 定位;无定位时使用默认坐标
25.0330, 121.5654; adsb.lol、airplanes.live和匿名 OpenSky 数据源切换;- 50–800 km 范围切换;
- 实时雷达扫描动画、航向向量和紧急 Squawk 标记;
- 点击飞机查看呼号、机型、注册号、高度、速度、航向、爬升率、距离和 Squawk;
- 120 秒最近接近预测,用红色标记潜在 ATC 冲突;
- 雷达圆圈在 N 方向标记 1/4、1/2、3/4 和外圈公里刻度。
- OpenStreetMap 中心地图图层;
- RainViewer 最新雷达回波图层;
- 根据手机 GPS 自动选择最近机场;
- 使用 FlightMate 同源的
aviationweather.gov获取最近机场 raw METAR 短报文。
- Flight Panel:航班号、起飞机场 ICAO、到达机场 ICAO、机型和备注;
- Flight Log:本地保存最多 30 条飞行记录;
- Android 单次闹钟通知;
- Home Assistant REST 状态发布:
sensor.flight_radar_aircraft; - 离线机型资料和简化飞机轮廓。
- 竖屏:雷达在上方,机场气象、Flight Panel、飞机列表和状态在下方;
- 横屏:雷达固定在左侧,信息面板固定在右侧;
- 顶部按钮使用紧凑布局,减少对雷达区域的占用;
- 飞机列表每架飞机只显示一行,固定列宽且不启用横向滚动。
飞机列表格式示例:
01 TAG21 GLF5 T231° A12200m S 939km/h D157.3km
字段依次为:序号、呼号、飞机类型、航向、海拔、速度和距离。无机型时显示 ICAO。
| 数据 | 接口 | 说明 |
|---|---|---|
| 默认航班 | https://api.adsb.lol/v2/point/... |
无需账号,作为默认数据源 |
| 备用航班 | https://api.airplanes.live/v2/point/... |
受网络 DNS 和服务可用性影响 |
| OpenSky | https://opensky-network.org/api/states/all |
当前使用匿名区域状态向量接口,受频率限制 |
| 机场 METAR | https://aviationweather.gov/api/data/metar |
最近机场最近 2 小时 raw METAR |
| 地图 | https://tile.openstreetmap.org |
中心瓦片,低透明度叠加 |
| 雷达回波 | https://api.rainviewer.com / tilecache.rainviewer.com |
metadata 加最新回波瓦片 |
| Home Assistant | /api/states/sensor.flight_radar_aircraft |
Bearer Token REST 写入 |
网络接口失败时,界面会显示网络错误或图层错误,不把网络故障误报为“0 架飞机”。
- 首次启动时授予定位权限。
- 使用数据源下拉框选择
adsb.lol、airplanes.live或OpenSky。 - 点击
RANGE切换雷达半径,点击REFRESH更新航班和机场气象。 - 点击
MAP、RAIN、ATC开关图层、回波和冲突向量。 - 点击雷达上的飞机,或在列表中查看紧凑目标信息;点击目标后下方显示详细资料。
- 点击
FLIGHT编辑 Flight Panel,选择SAVE + LOG同时保存面板和本地飞行记录。 - 点击
LOG查看历史记录或保存当前面板。
点击 HA,输入:
- Home Assistant 地址,例如
http://homeassistant.local:8123; - Long-lived access token。
应用会发布:
sensor.flight_radar_aircraft
状态值是当前飞机数量,属性包含手机当前纬度和经度。为兼容局域网 Home Assistant,应用允许明文 HTTP;跨网络使用时应改用 HTTPS,并避免在不可信网络中传输 Token。
构建环境:
- JDK 17;
- Android SDK Platform 35;
- Android Build Tools 35;
- Gradle 8.7 或更高版本。
在工程目录执行:
gradle :app:assembleDebug生成文件:
app\build\outputs\apk\debug\app-debug.apk
打开手机的开发者选项和 USB 调试,连接手机后执行:
$adb = "<Android SDK>\platform-tools\adb.exe"
& $adb devices -l
& $adb install -r .\app\build\outputs\apk\debug\app-debug.apk
& $adb shell am start -n com.delphicchen.flightradar/.MainActivity如果 adb devices -l 没有显示设备,先检查 USB 调试授权、数据线、Windows 驱动和手机 USB 连接模式。
应用声明:
INTERNET:访问航班、地图、回波、METAR 和 Home Assistant;ACCESS_FINE_LOCATION/ACCESS_COARSE_LOCATION:手机 GPS;POST_NOTIFICATIONS:Android 13 及以上的闹钟通知;SCHEDULE_EXACT_ALARM:设置精确闹钟。
- OpenSky 当前为匿名接口,没有接入 OAuth Client ID/Secret;
- 闹钟是单个下一次提醒,不是 ESP32 原版的四组闹钟面板;
- 飞机轮廓是 Android 端的离线种子资料和简化轮廓,不包含原项目完整大型位图数据库;
- 地图、RainViewer、OpenSky 和 METAR 依赖手机网络;
airplanes.live是否可用取决于当前网络 DNS、连通性和服务限流;- 需要在真实 vivo X Fold5 上进一步验证折叠态、横竖屏切换、定位权限、网络限流、METAR 刷新和 UI 密度。
v0.3.3 已完成:
- Gradle Debug APK 构建;
- APK applicationId、版本和权限静态检查;
- APK Signature Scheme v2 签名检查;
- ADS-B、OpenSky 和 METAR 接口连通性测试;
- APK 和源码 ZIP SHA-256 校验。
本适配版仅在 Android 端复用原项目的数据字段和交互思路。原项目及飞机轮廓等第三方资源的许可证、署名和非商业限制仍以原仓库为准: