use of io.hefuyi.listener.mvp.model.Song in project ListenerMusicPlayer by hefuyicoder.
the class PlaylistSongLoader method getSongsInPlaylist.
public static Observable<List<Song>> getSongsInPlaylist(Context context, long playlistID) {
ArrayList<Song> mSongList = new ArrayList<>();
final int playlistCount = countPlaylist(context, playlistID);
Cursor cursor = makePlaylistSongCursor(context, playlistID);
if (cursor != null) {
boolean runCleanup = false;
if (cursor.getCount() != playlistCount) {
runCleanup = true;
}
if (!runCleanup && cursor.moveToFirst()) {
final int playOrderCol = cursor.getColumnIndexOrThrow(MediaStore.Audio.Playlists.Members.PLAY_ORDER);
int lastPlayOrder = -1;
do {
int playOrder = cursor.getInt(playOrderCol);
if (playOrder == lastPlayOrder) {
runCleanup = true;
break;
}
lastPlayOrder = playOrder;
} while (cursor.moveToNext());
}
if (runCleanup) {
cleanupPlaylist(context, playlistID, cursor);
cursor.close();
cursor = makePlaylistSongCursor(context, playlistID);
if (cursor != null) {
}
}
}
if (cursor != null && cursor.moveToFirst()) {
do {
final long id = cursor.getLong(cursor.getColumnIndexOrThrow(MediaStore.Audio.Playlists.Members.AUDIO_ID));
final String songName = cursor.getString(cursor.getColumnIndexOrThrow(MediaStore.Audio.AudioColumns.TITLE));
final String artist = cursor.getString(cursor.getColumnIndexOrThrow(MediaStore.Audio.AudioColumns.ARTIST));
final long albumId = cursor.getLong(cursor.getColumnIndexOrThrow(MediaStore.Audio.AudioColumns.ALBUM_ID));
final long artistId = cursor.getLong(cursor.getColumnIndexOrThrow(MediaStore.Audio.AudioColumns.ARTIST_ID));
final String album = cursor.getString(cursor.getColumnIndexOrThrow(MediaStore.Audio.AudioColumns.ALBUM));
final long duration = cursor.getLong(cursor.getColumnIndexOrThrow(MediaStore.Audio.AudioColumns.DURATION));
final int durationInSecs = (int) duration / 1000;
final int tracknumber = cursor.getInt(cursor.getColumnIndexOrThrow(MediaStore.Audio.AudioColumns.TRACK));
final Song song = new Song(id, albumId, artistId, songName, artist, album, durationInSecs, tracknumber);
mSongList.add(song);
} while (cursor.moveToNext());
}
// Close the cursor
if (cursor != null) {
cursor.close();
cursor = null;
}
return Observable.from(mSongList).toList();
}
use of io.hefuyi.listener.mvp.model.Song in project ListenerMusicPlayer by hefuyicoder.
the class SongLoader method getSongsForCursor.
public static Observable<List<Song>> getSongsForCursor(final Cursor cursor) {
return Observable.create(new Observable.OnSubscribe<List<Song>>() {
@Override
public void call(Subscriber<? super List<Song>> subscriber) {
List<Song> arrayList = new ArrayList<Song>();
if ((cursor != null) && (cursor.moveToFirst()))
do {
long id = cursor.getLong(0);
String title = cursor.getString(1);
String artist = cursor.getString(2);
String album = cursor.getString(3);
int duration = cursor.getInt(4);
int trackNumber = cursor.getInt(5);
long artistId = cursor.getInt(6);
long albumId = cursor.getLong(7);
String path = cursor.getString(8);
arrayList.add(new Song(id, albumId, artistId, title, artist, album, duration, trackNumber, path));
} while (cursor.moveToNext());
if (cursor != null) {
cursor.close();
}
subscriber.onNext(arrayList);
subscriber.onCompleted();
}
});
}
use of io.hefuyi.listener.mvp.model.Song in project ListenerMusicPlayer by hefuyicoder.
the class PlayqueueSongPresenter method loadSongs.
@Override
public void loadSongs() {
Subscription subscription = mUsecase.execute(new GetSongs.RequestValues(Constants.NAVIGATE_QUEUE)).getSongList().subscribeOn(Schedulers.io()).observeOn(AndroidSchedulers.mainThread()).subscribe(new Action1<List<Song>>() {
@Override
public void call(List<Song> songs) {
mView.showSongs(songs);
}
});
mCompositeSubscription.add(subscription);
}
use of io.hefuyi.listener.mvp.model.Song in project ListenerMusicPlayer by hefuyicoder.
the class SongsPresenter method loadSongs.
@Override
public void loadSongs(String action) {
mCompositeSubscription.clear();
Subscription subscription = mUsecase.execute(new GetSongs.RequestValues(action)).getSongList().subscribeOn(Schedulers.io()).observeOn(AndroidSchedulers.mainThread()).subscribe(new Action1<List<Song>>() {
@Override
public void call(List<Song> songList) {
if (songList == null || songList.size() == 0) {
mView.showEmptyView();
} else {
mView.showSongs(songList);
}
}
});
mCompositeSubscription.add(subscription);
}
use of io.hefuyi.listener.mvp.model.Song in project ListenerMusicPlayer by hefuyicoder.
the class ArtistSongAdapter method onBindViewHolder.
@Override
public void onBindViewHolder(ItemHolder itemHolder, int i) {
if (getItemViewType(i) == 0) {
//nothing
setUpAlbums(itemHolder.albumsRecyclerView);
} else {
Song localItem = arraylist.get(i);
itemHolder.title.setText(localItem.title);
itemHolder.artist.setText(localItem.artistName);
itemHolder.album.setText(localItem.albumName);
Glide.with(mContext).load(ListenerUtil.getAlbumArtUri(localItem.albumId).toString()).diskCacheStrategy(DiskCacheStrategy.SOURCE).error(ATEUtil.getDefaultAlbumDrawable(mContext)).centerCrop().into(itemHolder.albumArt);
if (MusicPlayer.getCurrentAudioId() == localItem.id) {
itemHolder.title.setTextColor(ATEUtil.getThemeAccentColor(mContext));
} else {
itemHolder.title.setTextColor(ATEUtil.getThemeTextColorPrimary(mContext));
}
setOnPopupMenuListener(itemHolder, i - 1);
}
}
Aggregations