iTune for Android
Music, with room to make it yours.
iTune is an open-source Android music player built with Kotlin, Jetpack Compose, and Media3. It brings music discovery, synchronized lyrics, audio controls, offline library tools, radio, and a customizable player into one app.
Architecture
How the app works
Jetpack Compose renders the screens. App state coordinates playback, settings, and the library, while Media3 handles core playback. Separate packages manage lyrics, downloads, audio effects, radio, backups, and Android surfaces such as notifications and widgets.
The project has an Android app module and a Kotlin/JVM Discord RPC module. The repository’s source tree shows the current package layout.
Find something to play
Discover & search
Search and browse supported songs, artists, albums, playlists, charts, moods, genres, and radio collections. Open artist or album pages to explore artwork, track lists, and related releases. Search types, content region, and language can be configured in settings.
- Browse catalog shelves and supported music collections.
- Open artist and album details, then add or play tracks.
- Import supported playlist links and use compatible share intents.
- Keep search history locally, pause new history entries, or clear saved searches.
Results and playback availability can change when an upstream catalog changes, rate-limits access, or is unavailable in a region.
Playback & words
Player, queue & lyrics
The full-screen player presents artwork, track and artist details, playback progress, the active output route, queue tools, and lyrics. Queue tracks can be added, removed, reordered, or played directly.
Timed lyrics and translation
Lyrics can be searched through an ordered set of providers. When timing data is available, lines follow playback. Open the full lyrics view to follow more lines, adjust supported timing, translate through a configured provider, or share selected lines as a card.
Playback behavior
Playback settings include repeat, shuffle, crossfade, AutoMix, Afterglow, persistent shuffle, automatic skip after playback errors, and recurring sleep schedules. Availability and behavior may depend on the active source and current player state.
Sound & hardware
Audio engine & output
Audio tools include the in-app equalizer and supported processing modes such as low-pass filtering, spatial/8D audio, normalization, and DJ processing. The app can show the active output route and offers USB/bit-perfect configuration for compatible devices.
- Effect availability depends on the current route and audio session.
- Bluetooth codecs, vendor audio frameworks, USB DACs, and Android versions can limit or bypass processing.
- Bit-perfect output requires a compatible device and output path; selecting an option cannot make unsupported hardware bit-perfect.
- Pure-audio bypass can intentionally skip app processing.
Your offline library
Downloads, cache & history
Save available audio from supported song actions, choose a preferred quality, and receive progress and completion notifications. Playback caching can keep eligible tracks available offline, with configurable quality and storage limits.
- Choose Wi-Fi and cellular behavior and configure automatic downloads for supported liked or added tracks.
- Manage favorites, playlists, listening history, and supported profile statistics.
- Clear cached songs and temporary artwork or network-buffer data from settings.
- Use offline mode to require a local copy when playing music.
Download options depend on the upstream source and Android media-storage rules. Follow source terms and local copyright requirements.
Optional connections
Accounts, radio & shared listening
Sign-in and connected services are optional. Supported account features can sync selected library information; Last.fm can scrobble listening; Discord can show Rich Presence. iShare supports creating or joining listening sessions when network and connection modes permit.
Translation may use a provider endpoint, model, and API key configured by the user. Review that provider’s terms and any usage costs before enabling it.
Make it feel personal
Widgets, overlays & appearance
Appearance settings cover player presentation, artwork-driven color, app fonts, splash screen, animated cover art, haptics, and liquid-glass surfaces. The player can keep its own SF-style type regardless of the app font choice.
- Android home-screen widget with playback controls, favorite action, layout sizes, artwork options, and optional artwork blur.
- Optional floating playback surface and Always-On Display player.
- Android media notifications and lock-screen controls.
- Dynamic or static player presentation and artwork-derived colors.
Trust & safety
Privacy & security
Network features communicate with their selected providers. Account sessions, translation credentials, and backup files are sensitive. Only connect accounts and providers you trust, and avoid sharing logs or screenshots that expose tokens or personal data.
Backups and credentials
- Portable
.itunebackups are password-encrypted; the restore flow scans the chosen file and lets you select categories. - A password-protected backup cannot be restored without its password. Keep the password separate from the file.
- Android Keystore-backed encryption is used for supported account secrets; platform support can vary.
- Never commit signing keys, API tokens, cookies, account data, backups, or passwords to the repository.
Report a vulnerability privately
Do not post suspected security issues publicly. Use GitHub private vulnerability reporting when available, or contact the maintainer privately through GitHub. Include sanitized reproduction details and remove secrets. The project makes a best effort to investigate; no fixed response deadline is promised.
Read the complete security policy.
Android access
Permissions & why they exist
Android permissions support specific app functions. Some are requested only when you use the associated feature; basic playback does not require every optional permission.
- Network: music discovery, streams, artwork, lyrics, radio, account services, and release/news checks.
- Notifications and foreground playback: playback controls and ongoing downloads.
- Bluetooth connect: active Bluetooth output information when available.
- Microphone/audio capture: recognition or features that explicitly analyze input.
- System overlay: optional floating player surface.
- Audio settings and legacy storage: supported routing/effects and downloads on older Android versions.
Android, the device vendor, and Android version determine the exact permission prompts and behavior.
Open source
License, copyright & media rights
The original iTune source code and documentation are offered under the MIT License. You may use, modify, and redistribute the covered material subject to the license’s notice and disclaimer terms.
The MIT license does not grant rights to third-party songs, artwork, lyrics, service APIs, trademarks, or other external content. Those remain subject to their owners’ rights and service terms. Use music sources and save content only when authorized.
Developers
Build iTune from source
Use Android Studio, JDK 21, and the Android SDK platform and build tools requested by the project. The Gradle wrapper is included; use it instead of installing Gradle globally.
Windows PowerShell
.\gradlew.bat :app:assembleDebug
.\gradlew.bat :app:installDebug
.\gradlew.bat :app:testDebugUnitTest
Release build
Release builds enable R8 and resource shrinking. Configure signing with a private keystore in local, untracked configuration or CI secrets. Never commit release signing material.
Community
Contribute
Focused issues and pull requests help keep changes reviewable. Include the user-visible impact, Android version and device, relevant permissions or network requirements, and sanitized logs for platform-specific problems.
- Keep UI, playback, data, and platform work in their relevant packages.
- Update documentation when behavior, setup, permissions, or limitations change.
- Keep tokens, cookies, signing keys, local SDK paths, and personal account data out of commits.
- Follow the repository’s Code of Conduct and contribution guide.
No documentation sections match that search.