public async Task <IEnumerable <Artist> > GetArtistsByGenre(string genreId, ArtistSortOrder sortOrder = ArtistSortOrder.Default) { return(await LoadArtistsAsync( selection : null, selectionArgs : null, sortOrder : sortOrder )); }
public async Task <IEnumerable <Artist> > GetArtistsAsync(ArtistSortOrder sortOrder = ArtistSortOrder.Default) { return(await Task.Run(() => { var mediaQuery = PrepareMediaQuery(); return mediaQuery.ToArtists(sortOrder); })); }
internal static IEnumerable <Artist> ToArtists(this MPMediaQuery mediaQuery, ArtistSortOrder sortOrder) { foreach (var mediaItem in mediaQuery.Items) { if (mediaItem != null) { yield return(mediaItem.ToArtist()); } } }
public async Task <IEnumerable <Artist> > GetArtistsByGenre(string genreId, ArtistSortOrder sortOrder = ArtistSortOrder.Default) { if (string.IsNullOrWhiteSpace(genreId)) { throw new ArgumentNullException(nameof(genreId)); } return(await Task.Run(() => { var mediaQuery = PrepareMediaQuery(); var value = NSObject.FromObject(genreId); var genreIdPredicate = MPMediaPropertyPredicate.PredicateWithValue(value, MPMediaItem.GenrePersistentIDProperty); mediaQuery.AddFilterPredicate(genreIdPredicate); return mediaQuery.ToArtists(sortOrder); })); }
private async Task <IEnumerable <Artist> > LoadArtistsAsync(string selection, string[] selectionArgs, ArtistSortOrder sortOrder) { return(await Task.Run(() => { var cursor = Android.App.Application.Context.ContentResolver.Query( uri: MediaStore.Audio.Artists.ExternalContentUri, projection: _projections, selection: selection, selectionArgs: selectionArgs, sortOrder: sortOrder.ToStringSortOrder() ); return cursor.ToArtists(); })); }
public async Task <IEnumerable <Artist> > SearchArtistsAsync(string searchTerm, ArtistSortOrder sortOrder = ArtistSortOrder.Default) { if (string.IsNullOrWhiteSpace(searchTerm)) { throw new ArgumentNullException(nameof(searchTerm)); } return(await LoadArtistsAsync( selection : MediaStore.Audio.ArtistColumns.Artist + " like ?", selectionArgs : new[] { searchTerm + "%" }, sortOrder : sortOrder )); }
public async Task <IEnumerable <Artist> > GetArtistsByIdAsync(IEnumerable <string> artistIds, ArtistSortOrder sortOrder = ArtistSortOrder.Default) { if (!artistIds.HasValue()) { throw new ArgumentException(nameof(artistIds)); } var selectionBuilder = new StringBuilder(); selectionBuilder.Append(MediaStore.Audio.Artists.InterfaceConsts.Id + " IN ("); selectionBuilder.Append(string.Join(",", artistIds)); selectionBuilder.Append(")"); return(await LoadArtistsAsync( selection : selectionBuilder.ToString(), selectionArgs : null, sortOrder : sortOrder )); }
public async Task <IEnumerable <Artist> > SearchArtistsAsync(string searchTerm, ArtistSortOrder sortOrder = ArtistSortOrder.Default) { if (string.IsNullOrWhiteSpace(searchTerm)) { throw new ArgumentNullException(nameof(searchTerm)); } return(await Task.Run(() => { var mediaQuery = PrepareMediaQuery(); var value = NSObject.FromObject(searchTerm); var searchTermPredicate = MPMediaPropertyPredicate.PredicateWithValue(value, MPMediaItem.TitleProperty, MPMediaPredicateComparison.Contains); mediaQuery.AddFilterPredicate(searchTermPredicate); return mediaQuery.ToArtists(sortOrder); })); }
public async Task <IEnumerable <Artist> > GetArtistsByIdAsync(IEnumerable <string> artistIds, ArtistSortOrder sortOrder = ArtistSortOrder.Default) { if (!artistIds.HasValue()) { throw new ArgumentException(nameof(artistIds)); } return(await Task.Run(() => { var mediaQuery = PrepareMediaQuery(); var value = NSArray.FromNSObjects(artistIds.Select(s => NSObject.FromObject(s)).ToArray()); var arrayPredictor = MPMediaPropertyPredicate.PredicateWithValue(value, MPMediaItem.PersistentIDProperty, MPMediaPredicateComparison.Contains); mediaQuery.AddFilterPredicate(arrayPredictor); return mediaQuery.ToArtists(sortOrder); })); }