package io.hefuyi.listener.dataloader;
import android.content.Context;
import android.database.Cursor;
import android.provider.MediaStore;
import java.util.ArrayList;
import java.util.List;
import io.hefuyi.listener.mvp.model.Album;
import rx.Observable;
import rx.Subscriber;
/**
* Created by hefuyi on 2016/11/4.
*/
public class ArtistAlbumLoader {
public static Observable<List<Album>> getAlbumsForArtist(final Context context, final long artistID) {
return Observable.create(new Observable.OnSubscribe<List<Album>>() {
@Override
public void call(Subscriber<? super List<Album>> subscriber) {
List<Album> albumList = new ArrayList<Album>();
Cursor cursor = makeAlbumForArtistCursor(context, artistID);
if (cursor != null) {
if (cursor.moveToFirst())
do {
Album album = new Album(cursor.getLong(0), cursor.getString(1), cursor.getString(2), artistID, cursor.getInt(3), cursor.getInt(4));
albumList.add(album);
}
while (cursor.moveToNext());
}
if (cursor != null){
cursor.close();
}
subscriber.onNext(albumList);
subscriber.onCompleted();
}
});
}
private static Cursor makeAlbumForArtistCursor(Context context, long artistID) {
if (artistID == -1)
return null;
Cursor cursor = context.getContentResolver().query(MediaStore.Audio.Artists.Albums.getContentUri("external", artistID), new String[]{"_id", "album", "artist", "numsongs", "minyear"}, null, null, MediaStore.Audio.Albums.DEFAULT_SORT_ORDER);
return cursor;
}
}