¿Cómo utilizar la consulta MediaStore para obtener los artistas sin duplicados?

Me gustaría obtener todos los nombres de los artistas en mi teléfono usando MediaStore , Ya tengo toda la lista, pero con duplicados de todas las entradas debido a múltiples canciones de enlaces / artistas. ¿Hay alguna manera de utilizar la consulta para obtener sólo uno de cada uno, sin duplicados?

Hay mi consulta:

String selection = MediaStore.Audio.Media.IS_MUSIC + " != 0"; String[] projection = { MediaStore.Audio.Media.ALBUM, MediaStore.Audio.Media.ARTIST, MediaStore.Audio.Media.TITLE, MediaStore.Audio.Media.DATA, MediaStore.Audio.Media.DURATION }; Cursor cursor = context.getContentResolver().query( MediaStore.Audio.Media.EXTERNAL_CONTENT_URI, projection, selection, null, null); 

Gracias por adelantado !

El uso de la palabra clave DISTINCT en la consulta devuelve valores no duplicados. Por ejemplo, listar sólo nombres de álbumes al consultar muchos números de audio

  new String[] { "DISTINCT " + MediaStore.Audio.Playlists.Members.ALBUM_ID + " as _id"} 

pero he encontrado que sólo se puede devolver una columna

Lo mantuve simple y hizo lo siguiente al realizar bucle a través del cursor. Pase el valor, en su caso el artista,

  if (value.length() > 0) { // check if value already exists if (!listItems.contains(value)) { // doesn't exist, add it listItems.add(value); } } 

Este es un método simple. Puedes consultar esto en mi Administrador de listas de reproducción de aplicaciones en Google Play. Utilizo esta técnica para seleccionar artistas, años, etc.

Para las personas que todavía están buscando una respuesta a esto, sugeriría hacer lo siguiente:

 String[] mProjection = { MediaStore.Audio.Artists._ID, MediaStore.Audio.Artists.ARTIST, MediaStore.Audio.Artists.NUMBER_OF_TRACKS, MediaStore.Audio.Artists.NUMBER_OF_ALBUMS }; Cursor artistCursor = mContentResolver.query( MediaStore.Audio.Artists.EXTERNAL_CONTENT_URI, mProjection, null, null, MediaStore.Audio.Artists.ARTIST + " ASC"); 

Ahora puede consultar este cursor para obtener el nombre de todos los artistas. No habrá duplicados.
Entiendo que esta no es la solución para " obtener valores únicos de MediaStore " en general. Pero resolvería este problema muy específico.

Explicación :
Sólo tienes que consultar la tabla derecha, que en este caso fue la tabla " Artist ", mientras que la op estaba consultando la tabla " Media ".

Espero que esto ayude a alguien.

Bueno, para evitar ese problema, he utilizado la palabra clave "UNIQUE" cuando creo mis tablas.

public ArrayList getAlbumList () {

  ArrayList<SongBeen> albumList=new ArrayList<SongBeen>(); ContentResolver musicResolver = activity.getContentResolver(); Uri musicUri = android.provider.MediaStore.Audio.Artists.EXTERNAL_CONTENT_URI; Cursor musicCursor = musicResolver.query(musicUri, null, null, null, null); if(musicCursor!=null && musicCursor.moveToFirst()){ int titleColumn = musicCursor.getColumnIndex (android.provider.MediaStore.Audio.Media.TITLE); int idColumn = musicCursor.getColumnIndex (android.provider.MediaStore.Audio.Media._ID); int artistColumn = musicCursor.getColumnIndex (android.provider.MediaStore.Audio.Media.ARTIST); int albumColumn = musicCursor.getColumnIndex (android.provider.MediaStore.Audio.Media.ALBUM); //add songs to list do { SongBeen been=new SongBeen(); been.setId(musicCursor.getLong(idColumn)); been.setAlbum(musicCursor.getString(albumColumn)); been.setArtist(musicCursor.getString(artistColumn)); albumList.add(been); } while (musicCursor.moveToNext()); } return albumList; } 
  • Consultar el MediaStore: Unir miniaturas e imágenes (en ID)
  • Problema duplicado de Android thumbnail
  • Cuando toma la foto get - java.lang.Throwable: file: // Uri expuesto a través de ClipData.Item.getUri ()
  • ¿Es posible hacer una consulta sin procesar en la base de datos de metales de Android de meta sqlite?
  • cómo obtener todos los archivos de audio de la tarjeta sd Android
  • Mostrar imagen grande de la tarjeta SD en Android
  • ¿Qué es MINI_THUMB_MAGIC y cómo usarlo?
  • Inserción de un vídeo en MediaStore
  • Android: falla en la imagen de carga de Picasso. Cómo mostrar mensaje de error
  • ¿Cuál es la mejor manera de elegir un video en Android?
  • Android MediaScanner: elimina los archivos de imagen de la galería
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.