new tabs: home, artist, albums. fixed all music playlist to sort by letter. - #34
new tabs: home, artist, albums. fixed all music playlist to sort by letter.#34hamoudydev wants to merge 10 commits into
Conversation
This implements the "Support for music selection other than playlists" TODO item. New browse hierarchy: - Root ├── Playlists (existing) ├── Artists → [Artist] → [Albums] → Tracks └── Albums → [Album] → Tracks Changes: MusicSource.kt: - Added interface methods for loading artists, albums, artist albums, album tracks - Added state management and callbacks for async loading PlexSource.kt: - Implemented all new MusicSource methods - Added caching for artists, albums, and tracks - Auto-discovers music library section on initialization BrowseTree.kt: - Added UAMP_ARTISTS_ROOT and UAMP_ALBUMS_ROOT constants - Added ARTIST_PREFIX and ALBUM_PREFIX for media ID encoding - Added extension functions for Artist and Album metadata building MyMusicService.kt: - Expanded onLoadChildren() to handle Artists, Albums, and nested navigation - Updated onPrepareFromMediaId() to support album-based playback - Added buildAlbumPlaylist() for album track playback Resources: - Added artists_title and albums_title strings - Added baseline_person_24 and baseline_album_24 icons Requires kotlin-plexapi 0.2.0 with library browsing support. 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
- Documented Artists and Albums browsing feature - Added browse hierarchy diagram - Added changelog section - Marked "music selection other than playlists" TODO as complete - Added requirements, building, and dependencies sections 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
- Fix albumTracksWhenReady to return cached tracks instead of null - Add getAlbumTracks method to MusicSource interface - Make signing config optional for debug builds - Remove hardcoded signing config from shared module - Add debug logging for album track media IDs - Update README with detailed build instructions 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
- Add Home tab with Recently Played and Recently Added sections - Add All Music tab to browse all tracks grouped alphabetically (A-Z, #) - Large playlists now grouped alphabetically instead of page numbers - Add new drawable icons for home sections - Update README with new features and browse hierarchy 🤖 Generated with [Claude Code](https://claude.ai/code) Co-Authored-By: Claude <noreply@anthropic.com>
- Remove All Music browsing feature (keep Home, Playlists, Artists, Albums) - Add screenshots showing Home, Artists, Albums, and playlist browsing - Update README with screenshot gallery 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
|
@joeyberkovitz this would be an AMAZING addition to your already awesome project. Really hope you will merge this! Thanks for the efforts @hamoudydev! |
|
I'll take a look over the weekend. just at first glance, the corresponding API PR looked like it had some odd behavior due that will likely need correction |
I played around with it for a few hours in the emulator and had no issues, but if it does let me know and I'll correct it. Also noticed in one of the issue threads you said you no longer had an AAOS car and I just got mine and plan on keeping it for at least the next 5 years, would you be willing to transfer ownership of the repo/app so that someone like me can continue to maintain it? |
- Renamed package from us.berkovitz.plexaaos to us.tiba.plexamp - Updated LICENSE with dual copyright (original + modifications) - Now uses JitPack for plexamp-for-aaos-api dependency - Updated README with new branding and author info - Updated authenticator and content provider authorities - Version bump to 1.0.0 Based on original work by Joey Berkovitz (MIT License). 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
Replace original Firebase configuration with new project: - Project: plexamp-for-aaos (previously plex-aaos) - Package: us.tiba.plexamp (matches rebranded app) 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
|
I'm happy to review PRs but even transferring the repo doesn't get you anywhere as it's all down to the play store listing Anyway, I left outstanding comments on the API PR as there are still large issues |
- New app icon (car with Plex arrows) - Renamed app to "Plexamp for AAOS" - Fixed all package references from us.berkovitz to us.tiba - Added signing config for release builds - Added Play Store screenshots (phone, tablet, AAOS) - Version code 35 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
|
Any update on this? Thanks for the work @hamoudydev ! |
|
I have some valuable tips and hints for the network stack if you are interested. I built my own plex streaming AAOS app on my own, and found quite a lot of interesting quirks when working on the communications side of plex streaming. everything is not as it seems. |
|
sure, IDK what that has to do with this PR, but feel free to share the server selection logic is pretty simple: https://github.com/joeyberkovitz/plex-aaos/blob/master/automotive/src/main/java/us/berkovitz/plexaaos/library/PlexSource.kt it just selects the non-local address - AKA either a public IP if port-forwarding is enabled or the proxied address. If a user doesn't have plex-pass, the proxy refuses to send through larger files, or files without transcoding enabled, depending on how restrictive plex is feeling at the moment. |
Thanks for sharing that. Your server selection approach makes sense — simple and readable. One thing I noticed is that you're probing connections sequentially; I found that parallel probing with cancellation on first success made a significant difference on cold start time, getting it from around 9-10 seconds down to about 2.5 seconds. Worth considering if startup latency is something your users have raised. |
|
the settings menu allows for manual server selection if start time is a concern and there are multiple options available for some reason, though there are no issues relating to startup time here this app doesn't currently do transcoding, though the plex API is officially somewhat documented now (https://developer.plex.tv/pms/) along with the various unofficial reverse engineering that had been done for years. |
That makes sense — the question I was getting at isn't whether the app requests transcoding, but what endpoint the stream URL itself is built on, and whether you've verified at the server log level that FLAC files actually arrive as FLAC on the client. The reason I ask is that I found the two things can come apart in non-obvious ways depending on how Plex interprets the request path and client profile, even when directPlay is requested. Curious whether that's something your users with FLAC libraries have run into. |
|
It shouldn't really be a mystery because it's all open source :) But to answer your question, the "stream" URI is just the first media entry on the track https://github.com/joeyberkovitz/kotlin-plexapi/blob/master/src/jvmMain/kotlin/us/berkovitz/plexapi/media/MediaItem.kt I know there's a feature to have the Plex server preconvert media (mainly video) from a higher quality file to a more mobile friendly one. I haven't looked into if that would lead to multiple media entries being present on the track |
Tested your app against my server with the car on LTE. Plex server logs confirm decision=direct play on every track, FLAC files served directly throughout. Good result. Have you done the same verification on your end? |
|
Aside from burning tokens on your end, what's the intent here? If you have various improvements working, you're welcome to PR them here, open source your own, sell it, or just keep it to yourself. Yes, improvements can be made here. IDK when I'll get to it though without an actual AAOS car, so if anything, I'm usually on standard plexamp via AA |

-added home tab with recently played and recently added.




-added tab for artists.
-added tab for albums.
-fixed "all music" in playlist to group by letter. no more searching for songs by groups of 100 (1-100, 101-200, etc.)
-added 4 new screenshots to folder
Edit: the artist/album art work, I just screenshotted before it fully loaded.