Package
com.android.fmradio
FM Radio
Guidance
The AOSP "FM Radio" app. It is a stock Android application, kept in the AOSP tree at packages/apps/FMRadio, whose manifest declares the package name com.android.fmradio and version 2.0. It tunes and plays broadcast FM through the device's FM receiver: the manifest requests ACCESS_FM_RADIO, MODIFY_AUDIO_ROUTING, RECORD_AUDIO and related audio permissions, and the project ships a jni/fmr native directory through which the app reaches the tuner. On most devices wired headphones act as the aerial: FmService treats the headset lead as a "long antenna", checks antenna availability by asking the audio manager whether a wired headset is connected, and switches antenna type when the headset is plugged or unplugged. The same code also allows for a "short antenna" built into the phone, so headphones are the usual requirement rather than a universal one, and the native call can report that a device does not support the switch at all. It is a plain media app with no platform role, and it is not a Google app. Our signer data covers only a minority of the devices we have recorded it on, but on those it is signed by the device maker's own framework-signing key rather than by Google, which is what you would expect of a ROM-resident app. The devices carrying it are mostly budget and rugged handsets from makers such as Blackview, DOOGEE, OUKITEL, Ulefone, Unihertz, itel, Lenovo, Motorola, realme and OPPO. It appears in the launcher on some of those devices. Version note: the upstream AOSP project is effectively frozen. Its manifest carries a 2014 copyright and targets SDK 21, and the newest commit on the main branch is from May 2016. What ships today is therefore a vendor-maintained fork rather than a current AOSP build: copies in our sample still report version 2.0 but have been rebuilt against target SDKs from 27 to 34, and are recorded on devices from API 27 through API 35 (Android 8.1 to Android 15). We could not source any newer upstream successor, so treat behaviour as vendor-specific rather than standard across devices. For Android Enterprise, EMM and kiosk use no enrolment, policy or connectivity role was identified for it: it is a self-contained media app. On a work device it is a consumer distraction that can also record audio, so disabling or hiding it is a sensible default unless FM reception is genuinely part of the use case, which does happen on some rugged and field devices. Because what ships is a vendor fork rather than the upstream build, test on the exact model before rolling a disable out widely.
- FMRadio AndroidManifest.xml - Android (platform/packages/apps/FMRadio) →
- FmService.java (antenna and headset handling) - Android (platform/packages/apps/FMRadio) →
- FMRadio jni directory - Android (platform/packages/apps/FMRadio) →
- FMRadio commit log, main branch - Android (platform/packages/apps/FMRadio) →
- Package provenance for com.android.fmradio - Android System App Database →
Package intelligence
Observed signing, permission, version and size signals from contributing devices - descriptive of that sample, not a verdict. These come from the v2 Package Search sync, which not every device has contributed to yet, so for some packages this detail is partial or not present at all.
- Signed by the device maker's own signing key (OUKITEL), so it is an OEM preinstall, but 2 different certificates appear across the fleet, so OEMs ship their own builds of it. It also signs the Android framework, so it is a platform-level key on its device(s). Inferred from the certificate appearing only on OUKITEL devices (85 packages, 85 observations).
- Its largest observed manifest declares 24 permissions: 4 runtime (user-granted), 12 signature or system-level, 6 install-time and 2 vendor or uncatalogued. The signature/system share marks it as a privileged component, not an ordinary app.
Declared permissions (24)
Largest permission set observed for this package. Text is Android's own published description where one exists; platform permissions Android does not document show their granted protection level (in grey) instead; vendor or unknown constants show the name only.
| Permission | Description |
|---|---|
ACCESS_BROADCAST_RADIO |
Signature or privileged system permission. |
ACCESS_MOCK_LOCATION |
Signature-level system permission, for platform-signed apps. |
BLUETOOTH |
Allows the app to view the configuration of the Bluetooth on the phone, and to make and accept connections with paired devices. |
BROADCAST_CLOSE_SYSTEM_DIALOGS |
Signature or privileged system permission. docs ↗ |
CAPTURE_AUDIO_HOTWORD |
Signature or privileged system permission. docs ↗ |
CAPTURE_AUDIO_OUTPUT |
Signature or privileged system permission. docs ↗ |
CHANGE_CONFIGURATION |
Signature or privileged system permission. |
FOREGROUND_SERVICE |
Allows the app to make use of foreground services. |
FOREGROUND_SERVICE_MEDIA_PLAYBACK |
Allows the app to make use of foreground services with the type "mediaPlayback" |
INTERACT_ACROSS_USERS |
Signature or privileged system permission. |
INTERNET |
Allows the app to create network sockets and use custom network protocols. The browser and other applications provide means to send data to the internet, so this permission is not required to send data to the internet. |
MANAGE_USERS |
Signature or privileged system permission. |
MODIFY_AUDIO_ROUTING |
Signature or privileged system permission. |
MODIFY_AUDIO_SETTINGS |
Allows the app to modify global audio settings such as volume and which speaker is used for output. |
MOUNT_UNMOUNT_FILESYSTEMS |
Signature or privileged system permission. |
POST_NOTIFICATIONS |
Allows the app to show notifications |
READ_MEDIA_AUDIO |
Allows the app to read audio files from your shared storage. |
READ_PHONE_STATE |
Allows the app to access the phone features of the device. This permission allows the app to determine the phone number and device IDs, whether a call is active, and the remote number connected by a call. |
RECORD_AUDIO |
This app can record audio using the microphone while the app is in use. |
SET_MEDIA_KEY_LISTENER |
Signature or privileged system permission. |
START_FOREGROUND_SERVICES_FROM_BACKGROUND |
Signature or privileged system permission. |
WAKE_LOCK |
Allows the app to prevent the phone from going to sleep. |
com.android.fmradio.permission.FmMainActivity |
- |
com.sprd.engineermode.ENG_BROADCAST |
- |
Manage on devices
ADB commands for this package (the inverse of each is included so you can undo). Run from an authorised shell or wire the equivalent into your DPC. Verify on a test device first - this database doesn’t yet classify which packages are safe to change. --user 0 targets the current user; drop it (and use a privileged shell) to act device-wide.
/system, so Restore re-adds it (-k keeps app data)Seen on
Each record is a device profile (make + model + Android version). Each unique handset that syncs against a matching profile will increase the observations of a package, thereby increasing confidence that a package is expected to be on a device.
| OEM | Model | Android | Provenance | Observations | Last seen |
|---|---|---|---|---|---|
| A-gold | Titan | Android 9.0 | - | 5 | 15 Jun 2025 |
| ALCommon | ALCommon | Android 15 | - | 1 | 20 Jun 2025 |
| Ant Dao Technology Limited | B3 | Android 14 | - | 1 | 18 Aug 2026 |
| Blackview | VARG | Android 11 | - | 1 | 1 Sep 2025 |
| DOOGEE | S41 Max | Android 13 | - | 2 | 3 Oct 2025 |
| Fezawio | F11_V_US | Android 15 | - | 1 | 14 Jul 2026 |
| Hotwav | TAB R9 Pro | Android 14 | - | 1 | 18 Sep 2025 |
| Itel Mobile Limited | itel A16 Plus | Android 8.1 | OEM ITEL MOBILE LIMITED | 1 1 user-facing | 6 Dec 2025 |
| Lenovo | Lenovo TB-7306F | Android 11 | - | 1 | 19 Jul 2025 |
| Lenovo | Lenovo TB-X6C6NBF | Android 12 | - | 1 1 user-facing | 15 May 2025 |
| Motorola | moto g14 | Android 13 | - | 1 | 19 Dec 2025 |
| NUU | N5501L | Android 8.1 | - | 3 | 21 Aug 2025 |
| OPPO | CPH2591 | Android 15 | - | 1 1 user-facing | 10 Jul 2025 |
| OUKITEL | WP100 TITAN | Android 14 | - | 2 | 25 Jul 2025 |
| OUKITEL | WP100 TITAN | Android 15 | - | 1 | 6 Dec 2025 |
| OUKITEL | WP28 E | Android 14 | OEM OUKITEL | 1 1 user-facing | 24 Aug 2026 |
| OUKITEL | WP60 | Android 15 | - | 3 | 9 Dec 2025 |
| realme | RMX2001 | Android 11 | - | 1 1 user-facing | 21 Aug 2025 |
| Revoview | S6518 | Android 11 | - | 1 | 30 Mar 2026 |
| Smt_hk | Helium Pro | Android 12 | - | 1 1 user-facing | 19 Jul 2025 |
| Smt_hk | YUMPINGO_1 | Android 9.0 | - | 1 | 9 Aug 2025 |
| Ulefone | Power Armor X11 Pro | Android 12 | - | 1 | 15 Sep 2025 |
| Unihertz | Titan 2 | Android 15 | - | 2 | 5 Jan 2026 |
Known labels
Locale-aware display names seen in the wild.
| Label | Locale | Seen |
|---|---|---|
| FM Radio | en-us | 21 |
| FM Radio | en-gb | 9 |
| FM Radio | en | 2 |
| FM Radio | en-GB | 2 |
| FM Radio | en-US | 2 |
| FM Radio | en-lk | 1 |
| FM Radio | en-za-u-fw-mon-mu-celsius | 1 |
| Radio FM | it-it | 1 |
| วิทยุ FM | th-th | 1 |