# ilya-smirnov-de/staroeradio-android-player architecture

> Architecture diagram of the GitHub repository ilya-smirnov-de/staroeradio-android-player, generated by GitDiagram from its file tree, README and a sample of source files (last updated 2026-11-14). It is an AI-made overview: check details against the source.

- Interactive diagram: https://gitdiagram.com/ilya-smirnov-de/staroeradio-android-player
- Repository: https://github.com/ilya-smirnov-de/staroeradio-android-player

## Overview

Staroe Radio is an Android streaming-radio player. Users choose a station and press play in the app; the activity controls a background media session, which streams the selected station and quality from the external provider. Settings persist the station, language, and quality, while the app localizes its interface and playback metadata. The graph includes the principal runtime and settings capabilities documented in the README; the source excerpts do not show every notification or headset-control implementation detail.

Main entry points: [`app/src/main/java/ru/staroeradio/player/PlaybackService.kt`](https://github.com/ilya-smirnov-de/staroeradio-android-player/blob/main/app/src/main/java/ru/staroeradio/player/PlaybackService.kt) (Playback service), [`app/src/main/java/ru/staroeradio/player/MainActivity.kt`](https://github.com/ilya-smirnov-de/staroeradio-android-player/blob/main/app/src/main/java/ru/staroeradio/player/MainActivity.kt) (Main activity), [`app/src/main/java/ru/staroeradio/player/StreamQuality.kt`](https://github.com/ilya-smirnov-de/staroeradio-android-player/blob/main/app/src/main/java/ru/staroeradio/player/StreamQuality.kt) (Stream quality), [`app/src/main/java/ru/staroeradio/player/RadioStation.kt`](https://github.com/ilya-smirnov-de/staroeradio-android-player/blob/main/app/src/main/java/ru/staroeradio/player/RadioStation.kt) (Station catalog)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_app["App interface"]
  node_activity["Main activity<br/>[MainActivity.kt]"]
end

subgraph group_playback["Playback"]
  node_station["Station catalog<br/>[RadioStation.kt]"]
  node_service["Playback service<br/>[PlaybackService.kt]"]
end

subgraph group_settings["Preferences"]
  node_language["App language<br/>[AppLanguage.kt]"]
  node_quality["Stream quality<br/>[StreamQuality.kt]"]
  node_prefs[("Saved preferences<br/>[PlaybackService.kt]")]
end

node_listener(("Radio listener"))
node_provider{{"Radio stream provider"}}
node_android_media["Android media controls"]

node_listener -->|"chooses and plays"| node_activity
node_activity -->|"controls session"| node_service
node_activity -->|"selects station"| node_station
node_activity -->|"configures language"| node_language
node_activity -->|"configures quality"| node_quality
node_activity -->|"saves station"| node_prefs
node_language -->|"reads and saves"| node_prefs
node_quality -->|"reads and saves"| node_prefs
node_service -->|"loads station"| node_prefs
node_service -->|"builds media item"| node_station
node_service -->|"localizes metadata"| node_language
node_service -->|"refreshes stream"| node_quality
node_station -->|"uses bitrate"| node_quality
node_service -->|"streams audio"| node_provider
node_service -->|"provides background playback"| node_android_media

click node_activity "https://github.com/ilya-smirnov-de/staroeradio-android-player/blob/main/app/src/main/java/ru/staroeradio/player/MainActivity.kt"
click node_language "https://github.com/ilya-smirnov-de/staroeradio-android-player/blob/main/app/src/main/java/ru/staroeradio/player/AppLanguage.kt"
click node_quality "https://github.com/ilya-smirnov-de/staroeradio-android-player/blob/main/app/src/main/java/ru/staroeradio/player/StreamQuality.kt"
click node_station "https://github.com/ilya-smirnov-de/staroeradio-android-player/blob/main/app/src/main/java/ru/staroeradio/player/RadioStation.kt"
click node_service "https://github.com/ilya-smirnov-de/staroeradio-android-player/blob/main/app/src/main/java/ru/staroeradio/player/PlaybackService.kt"
click node_prefs "https://github.com/ilya-smirnov-de/staroeradio-android-player/blob/main/app/src/main/java/ru/staroeradio/player/PlaybackService.kt"

classDef toneNeutral fill:#f8fafc,stroke:#334155,stroke-width:1.5px,color:#0f172a
classDef toneBlue fill:#dbeafe,stroke:#2563eb,stroke-width:1.5px,color:#172554
classDef toneAmber fill:#fef3c7,stroke:#d97706,stroke-width:1.5px,color:#78350f
classDef toneMint fill:#dcfce7,stroke:#16a34a,stroke-width:1.5px,color:#14532d
classDef toneRose fill:#ffe4e6,stroke:#e11d48,stroke-width:1.5px,color:#881337
classDef toneIndigo fill:#e0e7ff,stroke:#4f46e5,stroke-width:1.5px,color:#312e81
classDef toneTeal fill:#ccfbf1,stroke:#0f766e,stroke-width:1.5px,color:#134e4a
class node_activity toneBlue
class node_station,node_service toneAmber
class node_language,node_quality,node_prefs toneMint
class node_listener,node_provider,node_android_media toneIndigo
```

## Components

### App interface

- [Main activity](https://github.com/ilya-smirnov-de/staroeradio-android-player/blob/main/app/src/main/java/ru/staroeradio/player/MainActivity.kt): `app/src/main/java/ru/staroeradio/player/MainActivity.kt`

### Playback

- [Station catalog](https://github.com/ilya-smirnov-de/staroeradio-android-player/blob/main/app/src/main/java/ru/staroeradio/player/RadioStation.kt): `app/src/main/java/ru/staroeradio/player/RadioStation.kt`
- [Playback service](https://github.com/ilya-smirnov-de/staroeradio-android-player/blob/main/app/src/main/java/ru/staroeradio/player/PlaybackService.kt): `app/src/main/java/ru/staroeradio/player/PlaybackService.kt`

### Preferences

- [App language](https://github.com/ilya-smirnov-de/staroeradio-android-player/blob/main/app/src/main/java/ru/staroeradio/player/AppLanguage.kt): `app/src/main/java/ru/staroeradio/player/AppLanguage.kt`
- [Stream quality](https://github.com/ilya-smirnov-de/staroeradio-android-player/blob/main/app/src/main/java/ru/staroeradio/player/StreamQuality.kt): `app/src/main/java/ru/staroeradio/player/StreamQuality.kt`
- [Saved preferences](https://github.com/ilya-smirnov-de/staroeradio-android-player/blob/main/app/src/main/java/ru/staroeradio/player/PlaybackService.kt): `app/src/main/java/ru/staroeradio/player/PlaybackService.kt`

### Other components

- **Radio listener**
- **Radio stream provider**
- **Android media controls**

## Connections

- Radio listener → Main activity: chooses and plays (evidence: `README.md`)
- Main activity → Playback service: controls session (evidence: `app/src/main/java/ru/staroeradio/player/MainActivity.kt`)
- Main activity → Station catalog: selects station (evidence: `app/src/main/java/ru/staroeradio/player/MainActivity.kt`)
- Main activity → App language: configures language (evidence: `app/src/main/java/ru/staroeradio/player/MainActivity.kt`)
- Main activity → Stream quality: configures quality (evidence: `app/src/main/java/ru/staroeradio/player/MainActivity.kt`)
- Main activity → Saved preferences: saves station (evidence: `app/src/main/java/ru/staroeradio/player/MainActivity.kt`)
- App language → Saved preferences: reads and saves (evidence: `app/src/main/java/ru/staroeradio/player/AppLanguage.kt`)
- Stream quality → Saved preferences: reads and saves (evidence: `app/src/main/java/ru/staroeradio/player/StreamQuality.kt`)
- Playback service → Saved preferences: loads station (evidence: `app/src/main/java/ru/staroeradio/player/PlaybackService.kt`)
- Playback service → Station catalog: builds media item (evidence: `app/src/main/java/ru/staroeradio/player/PlaybackService.kt`)
- Playback service → App language: localizes metadata (evidence: `app/src/main/java/ru/staroeradio/player/PlaybackService.kt`)
- Playback service → Stream quality: refreshes stream (evidence: `app/src/main/java/ru/staroeradio/player/PlaybackService.kt`)
- Station catalog → Stream quality: uses bitrate (evidence: `app/src/main/java/ru/staroeradio/player/RadioStation.kt`)
- Playback service → Radio stream provider: streams audio (evidence: `README.md`)
- Playback service → Android media controls: provides background playback (evidence: `README.md`)
