Main screen: shows the playlist and music controls, plus an button to add more tracks
Tapping a track gives an option to delete it
After deletion, the track disappears from the playlist.
Tapping the "Add Track" button shows a list of tracks that can be added.
After adding the track, it appears in the playlist.
I was in a team that did this (for this hackathon), but I couldn't get the SDK they were using to work, so I built my own app my way (instead of doing nothing).
What it does
You can use multiple phones to collaboratively build a single playlist, which can be edited while it is played. This all happens in realtime. Music is streamed via HTTP from a server, which also holds an index of all the songs.
How I built it
I used Xamarin to build an Android app in C#. After trying React and having absolutely zero progress in it (no internet = no go), I decided that even a C# cross-platform framework was better than one I couldn't use at all. The server is very simple: when you make a query, it stores the "data" parameter of that query, and if you make any GET request, the server returns the value of "data". All processing is left to the client, so the server can be very simple (playlists are stored as backslash-delimited plain text, one track per line).
Challenges I ran into
- Getting the C# code to operate with Android's Java APIs
- Xamarin build and packaging problems (the "path too long" errors turned out to be spurious) ## Accomplishments that I'm proud of Getting a semi-working synchronization working, despite:
- this being my first mobile app
- this being my first time working on the whole stack
- a hilariously bad server that just spits back whatever you feed it ## What I learned
- Building mobile apps isn't that hard
- When you can't use a debugger, debugging gets 10x more painful
- "Cross-platform" frameworks often have a lot of platform-specific code ## What's next for PlaylistSyncClientAndroid
- Soundcloud/other streaming service integration
- Multiple playlists
- Reading MP3s to find out the title and length automatically