Comments (2)
You need to have an interface defining basic "source" methods like "getSongs". Then, you create classes implementing this interface but with body adjusted to load the songs from different sources (MediaStore, Spotify, etc...). Also, your models (Song, Album, Artist, etc...) should have all the common meta data fields that you receive from any source type (song name, artist, album name...).
Take a look at my media player, how I implemented LocalMediaProvider, which extends MediaProvider interface. I can just make SpotifyMediaProvider, implement those methods to fetch data from Spotify instead of MediaStore and the rest should be pretty easy. And throughout the app you pass MediaProvider instances so it doesn't matter are the songs coming from your phone or another source.
from shuttle.
Thanks @icarapovic, that's exactly the approach I had in mind.
from shuttle.
Related Issues (20)
- A display issue
- Folder View not Working on Android 11 HOT 4
- Screenshots for F-Droid
- Metadata not showing for albums with large album covers
- Support browsing artists/albums/tracks over Bluetooth
- Read metadata from WAV files
- Shuttle use issue with new galaxy s10 update
- Privacy leak in Shuttle+ ? HOT 2
- Add support for embedded lyrics. HOT 2
- Tag Editor fails to update track number correctly
- Slow library loading with more entries in exclusion list
- Playlist Longer Than 30 Songs? HOT 8
- Playlists not updating
- Autoplay of next song doesn't produce sound
- Alert Tone genre
- Play Store Data Safety Section
- Feature Request: Folder view: Stay on last chosen folder or at least have setting for default folder
- Looping for a very long time stops working HOT 1
- mpc files are not added to library when scanned
- `IllegalStateException` when trying to open Folders view
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from shuttle.