Reverted "MediaSession update" back to RemoteControlClient. Added back the "x" to close the notification. Notification now also colored below Lollipop. Its now possible to play music from Google Now voice search.

This commit is contained in:
Karim Abou Zeid 2015-06-17 01:16:58 +02:00
commit 1072a3bf85
13 changed files with 712 additions and 329 deletions

View file

@ -17,12 +17,26 @@ import java.util.List;
public class AlbumLoader {
public static List<Album> getAllAlbums(Context context) {
Cursor cursor = makeAlbumCursor(context);
Cursor cursor = makeAlbumCursor(context, null, null);
return getAlbums(cursor);
}
public static List<Album> getAlbums(Context context, String query) {
Cursor cursor = makeAlbumCursor(context, MediaStore.Audio.AlbumColumns.ALBUM + " LIKE ?", new String[]{"%" + query + "%"});
return getAlbums(cursor);
}
public static Album getAlbum(Context context, int albumId) {
Cursor cursor = makeAlbumCursor(context, BaseColumns._ID + "=?", new String[]{String.valueOf(albumId)});
return getAlbum(cursor);
}
public static List<Album> getAlbums(Cursor cursor) {
List<Album> albums = new ArrayList<>();
if (cursor != null && cursor.moveToFirst()) {
do {
final int id = cursor.getInt(0);
final String albumName = cursor.getString(1);
final int id = cursor.getInt(0);
final String artist = cursor.getString(2);
final int artistId = cursor.getInt(3);
final int songCount = cursor.getInt(4);
@ -38,8 +52,23 @@ public class AlbumLoader {
return albums;
}
public static Cursor makeAlbumCursor(final Context context) {
return makeAlbumCursor(context, null, null);
public static Album getAlbum(Cursor cursor) {
Album album = new Album();
if (cursor != null && cursor.moveToFirst()) {
final int id = cursor.getInt(0);
final String albumName = cursor.getString(1);
final String artist = cursor.getString(2);
final int artistId = cursor.getInt(3);
final int songCount = cursor.getInt(4);
final int year = cursor.getInt(5);
album = new Album(id, albumName, artist, artistId, songCount, year);
}
if (cursor != null) {
cursor.close();
}
return album;
}
public static Cursor makeAlbumCursor(final Context context, final String selection, final String[] values) {
@ -59,46 +88,4 @@ public class AlbumLoader {
MediaStore.Audio.AlbumColumns.FIRST_YEAR,
}, selection, values, PreferenceUtils.getInstance(context).getAlbumSortOrder());
}
public static Album getAlbum(Context context, int albumId) {
Cursor cursor = makeAlbumCursor(context, BaseColumns._ID + "=?", new String[]{String.valueOf(albumId)});
Album album = new Album();
if (cursor != null && cursor.moveToFirst()) {
final int id = cursor.getInt(0);
final String albumName = cursor.getString(1);
final String artist = cursor.getString(2);
final int artistId = cursor.getInt(3);
final int songCount = cursor.getInt(4);
final int year = cursor.getInt(5);
album = new Album(id, albumName, artist, artistId, songCount, year);
}
if (cursor != null) {
cursor.close();
}
return album;
}
public static List<Album> getAlbums(Context context, String query) {
Cursor cursor = makeAlbumCursor(context, MediaStore.Audio.AlbumColumns.ALBUM + " LIKE ?", new String[]{"%" + query + "%"});
List<Album> albums = new ArrayList<>();
if (cursor != null && cursor.moveToFirst()) {
do {
final String albumName = cursor.getString(1);
final int id = cursor.getInt(0);
final String artist = cursor.getString(2);
final int artistId = cursor.getInt(3);
final int songCount = cursor.getInt(4);
final int year = cursor.getInt(5);
final Album album = new Album(id, albumName, artist, artistId, songCount, year);
albums.add(album);
} while (cursor.moveToNext());
}
if (cursor != null) {
cursor.close();
}
return albums;
}
}

View file

@ -17,12 +17,26 @@ import java.util.List;
public class ArtistLoader {
public static List<Artist> getAllArtists(Context context) {
Cursor cursor = makeArtistCursor(context);
Cursor cursor = makeArtistCursor(context, null, null);
return getArtists(cursor);
}
public static List<Artist> getArtists(Context context, String query) {
Cursor cursor = makeArtistCursor(context, MediaStore.Audio.ArtistColumns.ARTIST + " LIKE ?", new String[]{"%" + query + "%"});
return getArtists(cursor);
}
public static Artist getArtist(Context context, int artistId) {
Cursor cursor = makeArtistCursor(context, BaseColumns._ID + "=?", new String[]{String.valueOf(artistId)});
return getArtist(cursor);
}
public static List<Artist> getArtists(Cursor cursor) {
List<Artist> artists = new ArrayList<>();
if (cursor != null && cursor.moveToFirst()) {
do {
final int id = cursor.getInt(0);
final String artistName = cursor.getString(1);
final int id = cursor.getInt(0);
final int albumCount = cursor.getInt(2);
final int songCount = cursor.getInt(3);
@ -30,31 +44,14 @@ public class ArtistLoader {
artists.add(artist);
} while (cursor.moveToNext());
}
if (cursor != null)
if (cursor != null) {
cursor.close();
}
return artists;
}
public static Cursor makeArtistCursor(final Context context) {
return makeArtistCursor(context, null, null);
}
public static Cursor makeArtistCursor(final Context context, final String selection, final String[] values) {
return context.getContentResolver().query(MediaStore.Audio.Artists.EXTERNAL_CONTENT_URI,
new String[]{
/* 0 */
BaseColumns._ID,
/* 1 */
MediaStore.Audio.ArtistColumns.ARTIST,
/* 2 */
MediaStore.Audio.ArtistColumns.NUMBER_OF_ALBUMS,
/* 3 */
MediaStore.Audio.ArtistColumns.NUMBER_OF_TRACKS
}, selection, values, PreferenceUtils.getInstance(context).getArtistSortOrder());
}
public static Artist getArtist(Context context, int artistId) {
Cursor cursor = makeArtistCursor(context, BaseColumns._ID + "=?", new String[]{String.valueOf(artistId)});
public static Artist getArtist(Cursor cursor) {
Artist artist = new Artist();
if (cursor != null && cursor.moveToFirst()) {
final int id = cursor.getInt(0);
@ -71,24 +68,17 @@ public class ArtistLoader {
return artist;
}
public static List<Artist> getArtists(Context context, String query) {
Cursor cursor = makeArtistCursor(context, MediaStore.Audio.ArtistColumns.ARTIST + " LIKE ?", new String[]{"%" + query + "%"});
List<Artist> artists = new ArrayList<>();
if (cursor != null && cursor.moveToFirst()) {
do {
final String artistName = cursor.getString(1);
final int id = cursor.getInt(0);
final int albumCount = cursor.getInt(2);
final int songCount = cursor.getInt(3);
final Artist artist = new Artist(id, artistName, albumCount, songCount);
artists.add(artist);
} while (cursor.moveToNext());
}
if (cursor != null) {
cursor.close();
}
return artists;
public static Cursor makeArtistCursor(final Context context, final String selection, final String[] values) {
return context.getContentResolver().query(MediaStore.Audio.Artists.EXTERNAL_CONTENT_URI,
new String[]{
/* 0 */
BaseColumns._ID,
/* 1 */
MediaStore.Audio.ArtistColumns.ARTIST,
/* 2 */
MediaStore.Audio.ArtistColumns.NUMBER_OF_ALBUMS,
/* 3 */
MediaStore.Audio.ArtistColumns.NUMBER_OF_TRACKS
}, selection, values, PreferenceUtils.getInstance(context).getArtistSortOrder());
}
}

View file

@ -9,7 +9,6 @@ import com.kabouzeid.gramophone.model.Song;
import com.kabouzeid.gramophone.util.PreferenceUtils;
import java.util.ArrayList;
import java.util.List;
/**
* @author Karim Abou Zeid (kabouzeid)
@ -18,12 +17,26 @@ public class SongLoader {
private static final String BASE_SELECTION = MediaStore.Audio.AudioColumns.IS_MUSIC + "=1" + " AND " + MediaStore.Audio.AudioColumns.TITLE + " != ''";
public static ArrayList<Song> getAllSongs(Context context) {
Cursor cursor = makeSongCursor(context);
Cursor cursor = makeSongCursor(context, null, null);
return getSongs(cursor);
}
public static ArrayList<Song> getSongs(final Context context, final String query) {
Cursor cursor = makeSongCursor(context, MediaStore.Audio.AudioColumns.TITLE + " LIKE ?", new String[]{"%" + query + "%"});
return getSongs(cursor);
}
public static Song getSong(final Context context, final int queryId) {
Cursor cursor = makeSongCursor(context, MediaStore.Audio.AudioColumns._ID + "=?", new String[]{String.valueOf(queryId)});
return getSong(cursor);
}
public static ArrayList<Song> getSongs(final Cursor cursor) {
ArrayList<Song> songs = new ArrayList<>();
if (cursor != null && cursor.moveToFirst()) {
do {
final int id = cursor.getInt(0);
final String songName = cursor.getString(1);
final int id = cursor.getInt(0);
final String artist = cursor.getString(2);
final String album = cursor.getString(3);
final long duration = cursor.getLong(4);
@ -35,19 +48,35 @@ public class SongLoader {
songs.add(song);
} while (cursor.moveToNext());
}
if (cursor != null)
cursor.close();
return songs;
}
public static Cursor makeSongCursor(final Context context) {
return makeSongCursor(context, MediaStore.Audio.AudioColumns.IS_MUSIC + "=?", new String[]{"1"});
public static Song getSong(Cursor cursor) {
Song song = new Song();
if (cursor != null && cursor.moveToFirst()) {
final int id = cursor.getInt(0);
final String songName = cursor.getString(1);
final String artist = cursor.getString(2);
final String album = cursor.getString(3);
final long duration = cursor.getLong(4);
final int trackNumber = cursor.getInt(5);
final int artistId = cursor.getInt(6);
final int albumId = cursor.getInt(7);
song = new Song(id, albumId, artistId, songName, artist, album, duration, trackNumber);
}
if (cursor != null) {
cursor.close();
}
return song;
}
public static Cursor makeSongCursor(final Context context, final String selection, final String[] values) {
String finalSelection = BASE_SELECTION;
if (selection != null) {
finalSelection += " AND " + selection;
String baseSelection = BASE_SELECTION;
if (selection != null && !selection.trim().equals("")) {
baseSelection += " AND " + selection;
}
return context.getContentResolver().query(MediaStore.Audio.Media.EXTERNAL_CONTENT_URI,
@ -68,50 +97,6 @@ public class SongLoader {
MediaStore.Audio.AudioColumns.ARTIST_ID,
/* 7 */
MediaStore.Audio.AudioColumns.ALBUM_ID
}, finalSelection, values, PreferenceUtils.getInstance(context).getSongSortOrder());
}
public static List<Song> getSongs(final Context context, final String query) {
Cursor cursor = makeSongCursor(context, MediaStore.Audio.AudioColumns.TITLE + " LIKE ?", new String[]{"%" + query + "%"});
List<Song> songs = new ArrayList<>();
if (cursor != null && cursor.moveToFirst()) {
do {
final String songName = cursor.getString(1);
final int id = cursor.getInt(0);
final String artist = cursor.getString(2);
final String album = cursor.getString(3);
final long duration = cursor.getLong(4);
final int trackNumber = cursor.getInt(5);
final int artistId = cursor.getInt(6);
final int albumId = cursor.getInt(7);
final Song song = new Song(id, albumId, artistId, songName, artist, album, duration, trackNumber);
songs.add(song);
} while (cursor.moveToNext());
}
if (cursor != null)
cursor.close();
return songs;
}
public static Song getSong(final Context context, final int queryId) {
Cursor cursor = makeSongCursor(context, MediaStore.Audio.AudioColumns._ID + "=?", new String[]{String.valueOf(queryId)});
Song song = null;
if (cursor != null && cursor.moveToFirst()) {
final int id = cursor.getInt(0);
final String songName = cursor.getString(1);
final String artist = cursor.getString(2);
final String album = cursor.getString(3);
final long duration = cursor.getLong(4);
final int trackNumber = cursor.getInt(5);
final int artistId = cursor.getInt(6);
final int albumId = cursor.getInt(7);
song = new Song(id, albumId, artistId, songName, artist, album, duration, trackNumber);
}
if (cursor != null) {
cursor.close();
}
return song;
}, baseSelection, values, PreferenceUtils.getInstance(context).getSongSortOrder());
}
}