package com.airplayer.util;
import android.content.Context;
import android.database.Cursor;
import android.database.CursorIndexOutOfBoundsException;
import android.provider.MediaStore;
import android.util.Log;
import com.airplayer.model.Album;
import com.airplayer.model.Artist;
import com.airplayer.model.Song;
import java.util.ArrayList;
import java.util.List;
/**
* Created by ZiyiTsang on 15/6/5.
*/
public class QueryUtils {
public static String getAlbumArtPath(Context context, String albumTitle) {
Cursor cursor = context.getContentResolver().query(
MediaStore.Audio.Albums.EXTERNAL_CONTENT_URI,
new String[]{ MediaStore.Audio.Albums.ALBUM_ART },
"album = ?", new String[]{ albumTitle },
null);
if (cursor != null) {
if (cursor.moveToFirst()) {
String path = cursor.getString(0);
cursor.close();
return path;
}
return "";
} else {
return "";
}
}
public static ArrayList<Artist> loadArtistList(Context context) {
ArrayList<Artist> list = new ArrayList<>();
Cursor cursor = context.getContentResolver().query(
MediaStore.Audio.Artists.EXTERNAL_CONTENT_URI,
new String[]{ MediaStore.Audio.Artists._ID, MediaStore.Audio.Artists.ARTIST },
null, null, MediaStore.Audio.Artists.ARTIST);
if (cursor != null) {
if (cursor.moveToFirst()) {
do {
Artist artist = new Artist();
artist.setId(cursor.getInt(0));
artist.setName(cursor.getString(1));
list.add(artist);
} while (cursor.moveToNext());
}
cursor.close();
}
return list;
}
public static ArrayList<Album> loadAlbumList(Context context, String selection, String[] selectionArgs, String sortOrder) {
ArrayList<Album> list = new ArrayList<>();
Cursor cursor = context.getContentResolver().query(
MediaStore.Audio.Albums.EXTERNAL_CONTENT_URI,
new String[]{
MediaStore.Audio.Albums.ALBUM,
MediaStore.Audio.Albums._ID,
MediaStore.Audio.Albums.ARTIST,
MediaStore.Audio.Albums.LAST_YEAR,
MediaStore.Audio.Albums.ALBUM_ART
},
selection, selectionArgs, sortOrder);
if (cursor != null) {
if (cursor.moveToFirst()) {
do {
Album album = new Album();
album.setTitle(cursor.getString(0));
album.setId(cursor.getInt(1));
album.setAlbumArtist(cursor.getString(2));
album.setYear(cursor.getInt(3));
album.setAlbumArtPath(cursor.getString(4));
list.add(album);
} while (cursor.moveToNext());
}
cursor.close();
}
return list;
}
public static ArrayList<Song> loadSongList(Context context, String selection, String[] selectionArgs, String sortOrder) {
ArrayList<Song> list = new ArrayList<>();
Cursor cursor = context.getContentResolver().query(
MediaStore.Audio.Media.EXTERNAL_CONTENT_URI,
new String[]{
MediaStore.Audio.Media.IS_MUSIC, /* for checking if is music*/
MediaStore.Audio.Media._ID, /* */
MediaStore.Audio.Media.TITLE, /* for displaying in SongListFragment */
MediaStore.Audio.Media.DURATION, /* for displaying in SongListFragment */
MediaStore.Audio.Media.DATA, /* for playing */
MediaStore.Audio.Media.TRACK, /* for displaying in AlbumFragment */
MediaStore.Audio.Media.ALBUM_ID, /* for getting the album art*/
// MediaStore.Audio.Media.ALBUM, /* for displaying in SongListFragment */
// MediaStore.Audio.Media.ARTIST /* for displaying in SongListFragment */
},
selection, selectionArgs, sortOrder);
if (cursor != null) {
if (cursor.moveToFirst()) {
do {
if (cursor.getInt(0) == 1) {
Song song = new Song();
song.setId(cursor.getInt(1));
song.setTitle(cursor.getString(2));
song.setDuration(cursor.getInt(3));
song.setPath(cursor.getString(4));
song.setTrack(cursor.getInt(5));
song.setAlbumId(cursor.getInt(6));
// song.setAlbum(cursor.getString(7));
// song.setArtist(cursor.getString(8));
list.add(song);
}
} while (cursor.moveToNext());
}
cursor.close();
}
return list;
}
public static ArrayList<Album> loadRecentAlbum(Context context) {
ArrayList<Album> list = new ArrayList<>();
String[] recentAlbums = new String[] { "leov", "leov", "leov", "leov", "leov", "leov" };
int p = 0;
Cursor cursor1 = context.getContentResolver().query(
MediaStore.Audio.Media.EXTERNAL_CONTENT_URI,
new String[] {
MediaStore.Audio.Media.IS_MUSIC,
MediaStore.Audio.Media.ALBUM,
},
null, null, MediaStore.Audio.Media.DATE_ADDED + " desc");
if (cursor1 != null) {
if (cursor1.moveToFirst()) {
do {
if (cursor1.getInt(0) == 1) {
String albumName = cursor1.getString(1);
boolean have = false;
for (int i = 0; i < 6; i++) {
if (recentAlbums[i].equals(albumName)) {
have = true;
}
}
if (!have) {
recentAlbums[p] = albumName;
p++;
}
if (p > 5) break;
}
} while (cursor1.moveToNext());
}
cursor1.close();
}
for (int i = 0; i < 6; i++) {
Cursor cursor2 = context.getContentResolver().query(
MediaStore.Audio.Albums.EXTERNAL_CONTENT_URI,
new String[]{
MediaStore.Audio.Albums._ID,
MediaStore.Audio.Albums.ARTIST,
MediaStore.Audio.Albums.LAST_YEAR,
MediaStore.Audio.Albums.ALBUM_ART,
MediaStore.Audio.Albums.NUMBER_OF_SONGS
},
"album = ?", new String[]{ recentAlbums[i] }, null
);
if (cursor2 != null) {
try {
cursor2.moveToFirst();
Album album = new Album();
album.setTitle(recentAlbums[i]);
album.setId(cursor2.getInt(0));
album.setAlbumArtist(cursor2.getString(1));
album.setYear(cursor2.getInt(2));
album.setAlbumArtPath(cursor2.getString(3));
list.add(album);
} catch (CursorIndexOutOfBoundsException e) {
Log.d("QueryUtils", "index out of bounds");
}
cursor2.close();
}
}
return list;
}
}