Skip to content

sourajitk/Ambient-Music

Repository files navigation


This app allows you to play a curated stream of ambient music in the background without any fuss just like you can on iOS! The idea is to have a "set and forget" music player. You hit play, and it handles the rest, providing a seamless stream of ambient tunes. No complex UI or no creating playlists.

Features

  • Tracks Fetched on Demand The app pulls its song list from a remote JSON file. This means I can update the playlist with new tracks anytime without you needing to update the app!

    [    
        {
            "url": "https://song_url",
            "title": "Laidback Lo-Fi",
            "artist": "Ambient Music Chill",
            "albumArtUrl": "chill.jpeg",
            "genre": "chill"
        }
    ]
  • Smart Caching To save your data and keep the music flowing even on a spotty connection, the playlist gets cached right on your device. When the app wants to refresh, it grabs the latest JSON from the server.

  • Handy Notification Controls Creates a MediaSession that shows the current track's title, artist, and album art. You can pause, play, and skip right from the notification.

  • QS Tile For super-quick access, you can add a Quick Settings tile! Just like how you'd access it on iOS! Just swipe down and tap the tile to start or stop the music. You don't even have to find the app or the notification.

  • Support for Sleep Timer Want to play some ambient music before bed? Not a problem! Sleep Timer will automatically pause music once set with a timer preset ranging from 5 minutes - 20 minutes with the option to add as many minutes as desired using the notification created by my app. No more overnight battery drain!
    Bonus tip: This sleep timer actually works for any media that is being played on the system!

  • Built with Modern Technologies This project is built with Kotlin and uses Coroutines to handle the background stuff like fetching music and caching. UI is completely written using Jetpack Compose. Built for Android 16 and supports Material 3 Expressive.

  • Support for multiple form factors Enable navigation siderails when the display gets beyond a certain DPI for optimal user experience even for unconventional form factors and screen sizes.

Downloads (Android 12+) Github All Releases

Get it on the Google play store Get it on Github

Credits

Big thanks to all my testers for constantly testing my app and providing constructive feedback to help make it better throughout all the releases! 😄

Special thanks to @ralph950412 for helping me get these tracks in the first place.

Documentation

Some useful links I referred to while building the app:

Featured In

Android Authority

License

This project is licensed under the MIT License.
You are free to use, modify, and distribute this software with proper attribution.