From network discovery to poster, in six steps
Every launch runs the same pipeline: the library builds itself, even with "dirty" file names from old releases.
SsdpDiscovery.discover()DLNA discovery
UDP multicast M-SEARCH with MulticastLock: finds the MediaServers on the network, including the UGREEN NAS running UGOS Pro.
ContentDirectoryClient.browse()Reading the library
UPnP Browse action over SOAP with recursive scanning and folder path tracking.
DidlParser.parse()DIDL-Lite parsing
XML responses become MediaItem objects, with handling of the dc:/upnp: prefixes.
FilenameParser.parse()Name cleanup
"Il.Padrino.1972.iTALiAN.DVDRip.avi" becomes title + year; the S01E01 and 1x01 patterns identify episodes.
LibraryRepository.classify()Classification
Movies and episodes are told apart by the path (S1, Season 1, Stagione 1) and by parsing the file name.
TmdbClient.lookup()Metadata and covers
Poster, plot, rating and year from TMDB. If the title is not recognised, a cover with a deterministic gradient takes its place — with the golden "generated" badge.
Made for the couch, built to last
Native Compose for TV interface, remote-control navigation, ExoPlayer (Media3) player for mp4, mkv, H.264 and H.265.
Zero configuration
No IP address to type: the NAS is discovered on its own. Just be on the same network, without AP isolation.
Hero banner and rows
Streaming-style home with a featured banner, horizontal rows for movies and series, cards with poster and rating.
Detail view with seasons
Each series has its own screen with a tab per season and an episode list, rebuilt from the folder structure.
Generated covers
Title not recognised? Aura draws a cover with a gradient and text, so the library stays uniform.
Built-in player
ExoPlayer plays by direct HTTP streaming from the NAS: the file starts right away, with no intermediate downloads.
Optional TMDB key
The key lives in local.properties, outside the source code. Without a key the app still works, with generated covers.
Everything stays on your local network
Streaming happens entirely inside your home: files do not pass through any external server. The only outgoing requests are metadata lookups to TMDB, if the key is configured.
- Credentials and last-used server encrypted with AES-256 (EncryptedSharedPreferences)
- No telemetry, no account, no proprietary cloud
- Aura only plays files you already own: it neither provides nor distributes content
- No AI system in the app
Two ways to get it onto your TV
The package is an Android Studio project ready to open (JDK 17, Android Studio Giraffe or later). The first Build/Sync is the real test: check the versions in gradle/libs.versions.toml and the TMDB key.
Direct run via ADB
Enable Developer Options and USB/Wireless Debugging on the TV, then adb connect IP:5555 and Run from Android Studio. The app reaches the TV in a few seconds, logs included.
APK and sideload
Generate the APK with Build → Build APK(s) and install it via USB stick or the "Downloader" app, with unknown sources enabled on the TV.
Your library deserves a showcase.
Before opening Aura, prepare the NAS: enable the DLNA app from the UGOS Pro App Center and point it at your movie folders. Aura takes care of the rest.
Start with Method A