用户反馈: 暂停再恢复时经常弹出 "CW decode failed: The coroutine scope left the composition"。 根因: 暂停 (isListening=false) 使 LaunchedEffect 重启、旧的采集协程被 取消。若此刻 decodeWindow 正在 withContext(Dispatchers.Default) 里做 ONNX 推理, 取消传播时会抛出 LeftCompositionCancellationException (message 即 "The coroutine scope left the composition", 是 CancellationException 的子类)。processBuffer 的 catch (Throwable) 把它当成解码失败吞掉, 既误报了 错误横幅, 又破坏了协程取消的正常传播。 修复: - processBuffer 的 decodeWindow catch 里, CancellationException 直接 rethrow (暂停导致的中断是正常流程, 不是错误)。 - archiveDecode 调用同样包 try-catch, CancellationException rethrow, 其余异常只记日志不崩溃。 这是协程的标准纪律: 永远不要把 CancellationException 当业务异常吞掉。 版本: 4.5.5 -> 4.5.7 (versionCode 460)。此前多次删 v4.5.5 tag 重打导致 release 页面累积 12 个 draft 草稿, 已全部清除。
Look4Sat: Satellite tracker
Radio satellite tracker and pass predictor for Android, inspired by Gpredict
Track satellite passes with ease!
Thanks to Celestrak and SatNOGS you have access to over 9000 active satellites.
You can search the entire database by NORAD Catalog Number or the satellite's name.
Orbital positions and passes are calculated relative to your location.
To get reliable data make sure to set the station position via the app Settings.
The application is built using Kotlin, Coroutines, Jetpack Compose and Navigation.
It is now and always will be completely ad-free and open-source.
Main features:
- Predicting satellite positions and passes for up to 10 days
- Showing the list of currently active and upcoming satellite passes
- Showing the active pass progress, polar trajectory and transceivers info
- Showing the satellite positional data, footprint and ground track on the map
- Custom TLE satellite data import is available via Three Line Element .txt files
- Offline first: calculations are made offline. Weekly TLE data update is recommended.
License
Look4Sat is free software licensed under the GNU General Public License v3.0.
The CW decoder in feature/cw bundles the DeepCW
neural decoding model, which is licensed under the
GNU Affero General Public License v3.0
(AGPL-3.0-only). Provenance, attribution and the applied int8 quantization are
documented in feature/cw/licenses/NOTICE.md.
Because the combined work incorporates an AGPL-3.0 component, the requirements of AGPL-3.0 Section 13 apply to the combined work as a whole when it is distributed (GPL-3.0 Section 13 permits this combination). The CW model runs locally on-device and does not provide services over a network.





