Sé cómo recuperar el género de una canción en particular, (vea getting the genres), pero quiero recuperar todas las canciones de un género en particular. Como "género" no parece ser una de las columnas de un elemento multimedia, no sé cómo hacerlo en una sola consulta, a diferencia de artista o álbum. ¿Hay un método eficiente? Gracias!Android Mediastore: ¿Cómo recuperar eficientemente todas las canciones de un cierto género?
Respuesta
Puede hacerlo reuniendo un URI de contenido y consultando MediaStore. Aquí hay un código tomado del reproductor de música Android:
String [] cols = new String [] {MediaStore.Audio.Genres.NAME};
Cursor cursor = MusicUtils.query(this,
ContentUris.withAppendedId(MediaStore.Audio.Genres.EXTERNAL_CONTENT_URI, Long.valueOf(mGenre)),
cols, null, null, null);
Este es el código en MusicUtils:
public static Cursor query(Context context, Uri uri, String[] projection,
String selection, String[] selectionArgs, String sortOrder, int limit) {
try {
ContentResolver resolver = context.getContentResolver();
if (resolver == null) {
return null;
}
if (limit > 0) {
uri = uri.buildUpon().appendQueryParameter("limit", "" + limit).build();
}
return resolver.query(uri, projection, selection, selectionArgs, sortOrder);
} catch (UnsupportedOperationException ex) {
ErrorReporter.getInstance().putCustomData("UnsupportedOperationException", "true");
return null;
}
}
Uri uri = Audio.Genres.Members.getContentUri("external", genreID);
String[] projection = new String[]{Audio.Media.TITLE, Audio.Media._ID};
Cursor cur = contentResolver.query(uri, projection, null, null, null);
¿Podría agregar algo de texto explicando lo que ha hecho aquí tal vez? – Flexo
Audio.Genres.Members.getContentUri ("external", genreID) crea uri, like (content: // media/externo/audio/genres/2/members) donde "externo" significa, que buscaremos a través de contenido externo, y "2" es la identificación de género. ContentResolver.query (...) consulta el uri dado y devuelve un Cursor sobre el conjunto de resultados. –
@AlexanderMikhalevich pueden ayudarme por favor para este http://stackoverflow.com/questions/25235127/cleanest-method-to-play-songs-from-album-artist-genre-in-android –
- 1. Android MediaStore sqlite db location
- 2. ¿Cómo recuperar todas las ID de objeto?
- 3. ¿Cómo puedo actualizar MediaStore en Android?
- 4. Cómo recuperar todas las visitas en lucene.net
- 5. canciones de consulta de un álbum con CursorLoader
- 6. Listar todas las imágenes de la cámara en Android
- 7. Cómo reproducir canciones en Android - phonegap
- 8. Cómo buscar canciones en listas de reproducción en Android SDK?
- 9. ¿Puedo recuperar todas las revisiones de un documento eliminado?
- 10. Obteniendo solo las primeras 100 filas de imagen de mediastore
- 11. Obtener todas las variables $ _POST comenzando con cierto texto
- 12. Buscar todas las columnas de un cierto tipo en todas las tablas en una base de datos SQL Server
- 13. Cómo consultar el proveedor de contenido Android MediaStore, evitando las imágenes huérfanas?
- 14. Filtrar eficientemente un ArrayList en Java/Android
- 15. Obtener todas las propiedades que marcaron cierto atributo
- 16. ¿Conseguir que todas las filas consecutivas difieran en cierto valor?
- 17. ¿Cómo rescatar todas las excepciones bajo un cierto espacio de nombres?
- 18. Regex para encontrar todas las variantes de un cierto carácter dentro de un texto
- 19. ¿Cómo recuperar todas las claves (o valores) de un std :: map y ponerlas en un vector?
- 20. Android MediaStore obtiene distintas carpetas de archivos de música
- 21. recuperar lista de todas las etiquetas en blogger
- 22. Cassandra Hector: ¿Cómo recuperar todas las filas de una familia de columnas?
- 23. Mysql recuperar todas las filas con límite de
- 24. Android - Cómo recuperar las tasas de cambio de moneda
- 25. ¿Cómo puedo usar HTML Agility Pack para recuperar todas las imágenes de un sitio web?
- 26. SharedPreferences.getAll() no tiene claves de preferencia que son falsas. ¿Cómo recuperar todas las llaves?
- 27. Query MediaStore Cursor usando la carpeta específica
- 28. ¿Cómo escribo un género peor que O (n!)
- 29. ¿Pasar por todas las subvistas de una vista de Android?
- 30. Cassandra: cómo recuperar todas las claves en un CF (particionador aleatorio)
A menos que la lista de música es monstruosa (30k canciones +), no creo sufrirás mucho de una penalización de rendimiento simplemente obteniendo todas las canciones, luego verificando el género y agregando el correcto a la lista. – AedonEtLIRA
Tengo 2K canciones, y toma lo suficiente como para querer poner un diálogo de progreso, incluso con mi Samsung Charge moderadamente rápido. Es muy lento en mi tableta cheapo de 600MHz (por alguna razón, más del doble de lenta). Eso es lo que haré si es necesario, pero esperaba que hubiera un truco que me faltaba. – MBro