示例#1
0
 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());
         }
     }
 }
示例#4
0
 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();
     }));
 }
示例#5
0
        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);
            }));
        }