Reproducción de files de audio de la carpeta deseada

Tengo 5 carpetas y cada carpeta contiene 5 files de audio. Cuando Alguien hace clic en una carpeta, el progtwig debería comenzar a reproducir todos los files de audio de esa carpeta. Soy nuevo en Android, así que tengo una muy pequeña Idea al respecto. Intenté hacerlo, pero muestra todos los files de audio juntos. Quiero que muestre la carpeta sabiamente.

fun abs(){ var songsURI = MediaStore.Audio.Media.EXTERNAL_CONTENT_URI var selection = MediaStore.Audio.Media.IS_MUSIC + "!=0" val cursor = contentResolver.query(songsURI,null,selection,null,null) if(cursor!= null) { if (cursor!!.moveToFirst()){ do { var songURL = cursor!!.getString(cursor!!.getColumnIndex(MediaStore.Audio.Media.DATA)) var songAuth =cursor!!.getString(cursor!!.getColumnIndex(MediaStore.Audio.Media.ARTIST)) var SongNAme = cursor!!.getString(cursor!!.getColumnIndex(MediaStore.Audio.Media.TITLE)) listSongs.add(Songinfo(songURL,songAuth,SongNAme)) }while (cursor!!.moveToNext()) } cursor!!.close() adapter = MySongAdapter(listSongs) hello.adapter = adapter } } 

Por favor ayuda

A continuación, el código le dará la list de canciones en cada directory, debe cambiar el adaptador para mostrar el nombre del directory y la list de canciones.

 data class SongInfo(var songURL: String, var songAuth: String, var songNAme: String) data class DirInfo(var dir: String, var songInfo: ArrayList<SongInfo>) private fun getAudioDirectories(): ArrayList<DirInfo> { var result = ArrayList<DirInfo>() val directories = LinkedHashMap<String, ArrayList<SongInfo>>() val uri = MediaStore.Audio.Media.EXTERNAL_CONTENT_URI val selection = MediaStore.Audio.Media.IS_MUSIC + "!=0" val order = MediaStore.Audio.Media.DATE_MODIFIED + " DESC" val cursor = getContentResolver().query(uri, null, selection, null, order) cursor.let { it.moveToFirst() val pathIndex = it.getColumnIndex(MediaStore.Images.Media.DATA) do { val path = it.getString(pathIndex) val file = File(path) if (!file.exists()) { continue } val fileDir = file.getParent() var songURL = it.getString(it.getColumnIndex(MediaStore.Audio.Media.DATA)) var songAuth = it.getString(it.getColumnIndex(MediaStore.Audio.Media.ARTIST)) var songName = it.getString(it.getColumnIndex(MediaStore.Audio.Media.TITLE)) if (directories.containsKey(fileDir)) { var songs = directories.getValue(fileDir); var song = SongInfo(songURL, songAuth, songName) songs.add(song) directories.put(fileDir, songs) } else { var song = SongInfo(songURL, songAuth, songName) var songs = ArrayList<SongInfo>() songs.add(song) directories.put(fileDir, songs) } } while (it.moveToNext()) for (dir in directories) { var dirInfo: DirInfo = DirInfo(dir.key, dir.value); result.add(dirInfo) } } return result } 

Usando su Adaptador no podemos mostrar la list de Álbum con canciones, puede usar esto o puede tomar cualquiera de estas librerías de Android-Arsenal