Skip to content

Android

adswill edited this page Oct 18, 2026 · 2 revisions

The OnAir decoder core with a phone interface. Receive only.

The Android app is the desktop decoder core (the same C++ code, built as libonair.so) with a phone interface in Kotlin Compose: spectrum and waterfall, the mode list with search and groups, a results tab with the decoded data of the selected mode, and a log. It is part of release 0.2.6.

  • Receive only. The app never transmits. Its only permission is INTERNET (for rtl_tcp and SpyServer, and for map tiles).
  • Sources: an RTL-SDR on the USB port (0.2.7), rtl_tcp (an RTL-SDR served over the network, or on the phone itself), SpyServer, an IQ file (cs8, cu8, cf32, ci16, cu16, with its sample rate) and a built-in test signal for the selected mode that needs no radio.
  • Results: per-mode results (cards and tables), an OpenStreetMap map (tiles are only fetched after you agree), and FM with RDS.
  • Use it: pick a source on the Receiver tab, a mode on the Mode tab, press play. Tap the spectrum to tune, drag to move, pinch to zoom (double tap resets).

Install

Download OnAir-...-android.apk from the latest release, copy it to the phone, open it and allow installs from unknown sources for the app you opened it with. The APK is signed with the project's own key, not a Play Store key; updating later needs the same key. 0.2.7 uses a new permanent signing key: uninstall 0.2.6 first (Android will not install 0.2.7 over it); later updates install normally.

Limits

arm64-v8a only, Android 9 (API 28) or newer. Direct USB works for RTL-SDR radios (new in 0.2.7); HackRF and Airspy USB are not supported yet, so use rtl_tcp or SpyServer for those. No vocoder voice (DMR, P25, NXDN, D-STAR; mbelib is not included and not available on Android), TETRA is network information only anyway, no TV video or sound, and no images yet (the satellite pictures and the SSTV / fax pictures). Wide modes (DVB, ATSC) need a fast phone.

See also Install, Supported radios and Network radios.

Clone this wiki locally