This policy describes how the Android app Radio Live FM AM, published by A.P.S.Mobile (Wayne Tseng), handles information. This policy uses the product name Radio Live FM AM. The Android package and applicationId are unchanged: com.apsmkimo.go2radiolive. This is the same app previously described here as Go2Radio Live. It reflects the app as implemented in the Go2radiolive-android source (version 1.6.1): an internet radio and podcast player. Station catalogs come from the Radio-Browser API. Podcast catalogs come from public Apple charts, an iTunes lookup, and the podcast’s own RSS feed. Audio is then streamed from the third-party broadcaster or podcast host named in that catalog. The app shows Google AdMob banner, native, and app-open ads only after Google’s consent check allows them.
The app does not ask you to create an account. The developer does not collect personal data such as your name, email address, phone number, contacts, or precise location, and does not operate a server that receives data from the app.
INTERNET is used to load station and podcast catalogs, stream audio, load station images, and talk to Google AdMob and Google’s consent service.ACCESS_NETWORK_STATE is declared so the ads SDK and playback can tell whether a connection is available. The app does not store Wi-Fi names or cell identifiers.WAKE_LOCK, FOREGROUND_SERVICE, and FOREGROUND_SERVICE_MEDIA_PLAYBACK keep a media session running with a playback notification while audio plays.POST_NOTIFICATIONS so the playback notification and the wake-up alarm notification can be shown.RECEIVE_BOOT_COMPLETED lets the app register the saved wake-up alarm again after the device restarts. The same receiver also runs when the clock time or time zone changes, so the next alarm stays aligned with the clock.SCHEDULE_EXACT_ALARM schedules the wake-up alarm for the clock time you set. On Android 12 and later, an exact alarm runs only if you allow alarms and reminders for this app. If that is off, the app schedules a non-exact alarm instead, which may fire late. The app does not read your other alarms.The manifest does not request location, storage, photos, contacts, microphone, camera, or phone-state permissions.
Preferences are kept in on-device DataStore. Favorites are stored under go2radio_favorites as JSON of the stations you mark: station id, name, stream address, homepage, icon address, tags, country, and country code. Audio settings are stored under go2radio_audio_settings: whether the audio-panel button is shown, the four equalizer bands (bass, low, mid, high), left-right balance, voice enhancement, the spatial-audio mode (off, natural, surround, or orbit), and the orbit period, direction, and strength. The search box filters the list already on screen; that text is not saved and is not sent as a search query.
The podcast country you pick is stored under go2radio_podcast_region as a two-letter storefront code (storefront). Choosing Automatic removes that value, and the app uses the device region described below. The country search in that picker filters a list on the device and is not sent as a query.
The wake-up alarm is stored under go2radio_wake_alarm: whether it is on, the hour and minute, the repeat days (an empty list means one time), the station to play, and a backup station. The last station you played is stored in the same file so the alarm can offer it. These are station records and a clock time, not an account. A one-time alarm turns itself off after it fires. Snooze waits ten minutes and keeps that station in the on-device alarm until it fires. The sleep timer (15, 30, 45, 60, or 90 minutes, a custom length from 1 to 240 minutes, or the end of the current podcast episode) is held in memory for the current session. It is not written to DataStore, and ending the app process clears it.
The app also keeps the last successful podcast chart, including show names, artwork addresses, and RSS feed addresses, in podcast_catalog.json in the app’s private files. Category lists (rankings, topic counts, languages, and station lists) are kept the same way in category_catalog.json. A saved copy older than about twelve hours is refreshed in the background; a manual refresh asks for a new copy. These files are station and show catalogs, not an account or a listening history. Copies of catalog responses may also sit in the app’s HTTP cache. The developer does not receive these files.
The manifest allows Android backup (allowBackup is true) and the project does not add rules that exclude these DataStore files, the catalog JSON files, or the app-open SharedPreferences, so a device backup or transfer may include them. Uninstalling the app removes them from the device. The developer does not receive them.
The app shows ads through the Google Mobile Ads SDK, dependency com.google.android.gms:play-services-ads. It can show an anchored adaptive banner, a native ad about every eight rows in the local station list, the world station list (including a search of that list), and the podcast list, and an app-open ad. It does not show interstitial ads. App measurement is delayed until the SDK is initialized, and MobileAds.initialize runs only when Google’s consent check says ads may be requested. If that check is false, or a native ad fails to load, the list does not leave an empty ad slot.
An app-open ad can appear on a cold start, if it finishes loading within about four seconds after consent and Mobile Ads initialization, and when you return to the app from the background. It is not shown while radio or podcast audio is playing or buffering, while the consent form is open, or over another full-screen ad. A loaded app-open ad expires after four hours, and the app waits at least four hours between shows. The time the last app-open ad was shown is stored on the device in SharedPreferences (go2radio_app_open). Starting a wake-up alarm skips the next app-open ad. The developer does not receive that timestamp.
Google AdMob, as part of serving and measuring ads, collects device identifiers, including the advertising ID, along with other data described in Google’s policies. The app source does not read the advertising ID itself.
You can limit ad personalization in your device settings (Google Settings → Ads, or reset your advertising ID). How Google uses this information is covered by:
On each launch the app updates consent with the Google User Messaging Platform (UMP). UMP decides whether a consent form is required. That includes the form Google shows for GDPR in the EEA and the UK. The request is not tagged for a user under the age of consent. Banner, native, and app-open ads load only when UMP reports that the app can request ads.
When UMP reports that privacy options are required, Settings shows Privacy options. That row opens Google’s privacy-options form so you can change your ads choice. The row is hidden when UMP does not require it.
Remove ads is an optional one-time in-app purchase. Purchases are processed by Google Play. The developer does not receive or store payment card details. The app only checks with Google Play whether the Remove ads purchase is owned, and stores that ownership status on the device. Google’s privacy policy applies to the payment.
When the Remove ads purchase is owned, ads and ad consent prompts are not shown.
Station, country, and tag lists come from the public Radio-Browser API at https://de1.api.radio-browser.info/. Requests send the User-Agent Go2RadioLive/1.6.1. That string is the app’s network identifier and version in the 1.6.1 source. It is not the name shown for Radio Live FM AM. The local and world lists ask for up to 500 stations in a country, ordered by clicks. The category tab can also ask Radio-Browser for rankings, a language, or a minimum bitrate when you choose those filters. The category country you pick is for the current session and is not saved as a setting; the stations returned for it may be cached on the device, as described above. The search box still filters only the list already on screen. When you play a station, the app calls Radio-Browser’s URL endpoint for that station id. That call counts a click with Radio-Browser and returns a stream address; if it fails, playback uses the stream address already included with the station. The stream itself is served by the broadcaster, not by the developer. A station icon, when one is listed, is loaded from the image address in the catalog.
The podcast list is built from Apple’s public Marketing Tools podcast chart and from iTunes genre RSS feeds for the same country, then deduplicated on the device. On the podcast tab you can pick that country. The choice is saved on the device, as described above. Automatic uses the device region. Opening a show calls the iTunes Lookup API for that show’s RSS address, downloads the feed from the podcast publisher, and plays episode files from the addresses in the feed with the same on-device player used for radio. Apple and the podcast host receive those requests, including the country code and the app’s User-Agent. The developer does not receive what you play.
To choose a default country, the app reads three values on the device, in order: the network country code, the SIM country code, then the country of the system locale. It keeps a two-letter country code. That detected code is not stored as a profile and is not sent to the developer. It is placed in the Radio-Browser local-station URL, and in the Apple catalog URL when the podcast country is set to Automatic. A podcast country you pick is saved on the device and is used only for the Apple chart and iTunes lookup. The app does not request location permission and does not read GPS coordinates, your phone number, or a device serial.
If no country code can be read, the local station list uses the United States. Taiwan stays Taiwan. Another country with no stations in the first response also falls back to the United States. Podcast charts use the United States chart when the regional chart fails or comes back empty.
The developer does not sell personal information. The app does not include a separate analytics or crash-reporting SDK. Services the app does contact are Google Play Billing, Google AdMob, Google UMP, the Radio-Browser API, Apple’s chart and iTunes lookup endpoints, podcast RSS hosts, radio and podcast stream hosts, and image hosts for station or show artwork. Those parties receive the network request (including your IP address and the app’s User-Agent) under their own policies. Google’s policies are linked above. The developer does not control that processing.
Radio Live FM AM is a general-audience app for internet radio and podcasts. It is not directed at children under 13, and the developer does not knowingly collect personal information from children.
If this policy changes, the updated text will be posted on this page with a new effective date.
The app has no user accounts, and the developer does not run a server, so the developer holds no personal data about users.
Favorites, settings, alarms, and the remove-ads purchase status are stored only on the device. You can delete them by clearing the app’s storage (Settings > Apps > Radio Live FM AM > Storage > Clear storage) or by uninstalling the app.
Advertising data is handled by Google AdMob. You can reset or delete your advertising ID in device settings (Settings > Google > Ads / Privacy > Ads) and manage Google data at https://myaccount.google.com/data-and-privacy. Purchase records are managed by Google Play.
You may also request help or deletion by emailing the developer at apsmkimo@gmail.com. Requests are answered within 30 days.
Questions about this policy: apsmkimo@gmail.com