public async Task <IEnumerable <Genre> > GetGenresAsync(GenreSortOrder sortOrder = GenreSortOrder.Default) { return(await LoadGenresAsync( selection : null, selectionArgs : null, sortOrder : sortOrder )); }
public async Task <IEnumerable <Genre> > GetGenresAsync(GenreSortOrder sortOrder = GenreSortOrder.Default) { return(await Task.Run(() => { var mediaQuery = PrepareMediaQuery(); return mediaQuery.ToGenres(sortOrder); })); }
internal static IEnumerable <Genre> ToGenres(this MPMediaQuery mediaQuery, GenreSortOrder sortOrder) { foreach (var mediaItem in mediaQuery.Items) { if (mediaItem != null) { yield return(mediaItem.ToGenre()); } } }
private async Task <IEnumerable <Genre> > LoadGenresAsync(string selection, string[] selectionArgs, GenreSortOrder sortOrder) { return(await Task.Run(() => { using var cursor = Android.App.Application.Context.ContentResolver.Query( uri: MediaStore.Audio.Genres.ExternalContentUri, projection: _projections, selection: selection, selectionArgs: selectionArgs, sortOrder: sortOrder.ToStringSortOrder() ); return cursor.ToGenres(); })); }
public async Task <IEnumerable <Genre> > SearchGenresAsync(string searchTerm, GenreSortOrder sortOrder = GenreSortOrder.Default) { if (string.IsNullOrWhiteSpace(searchTerm)) { throw new ArgumentNullException(nameof(searchTerm)); } return(await LoadGenresAsync( selection : MediaStore.Audio.GenresColumns.Name + " like ?", selectionArgs : new[] { searchTerm + "%" }, sortOrder : sortOrder )); }
public async Task <IEnumerable <Genre> > SearchGenresAsync(string searchTerm, GenreSortOrder sortOrder = GenreSortOrder.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.ToGenres(sortOrder); })); }