-- Giả sử ta cần lấy List Audio từ bộ nhớ máy--
1. Tạo Class: Song
1 2 3 4 5 6 7 8 9 10 11 |
public class Song { private String data; private int size; private String title; private int duration; private String artist; private String album; private Bitmap thumbnail; // thêm Getter và Setter nhé ... } |
2. Tạo Class: SystemAudio
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 |
package com.example.miniaudioplayer.utils; import android.content.ContentResolver; import android.content.Context; import android.database.Cursor; import android.provider.MediaStore; import com.example.miniaudioplayer.model.Song; import java.util.ArrayList; public class SystemAudio { private ContentResolver resolver; public SystemAudio(Context context) { this.resolver = context.getContentResolver(); } public ArrayList<Song> getAudioList(){ ArrayList<Song> songs = new ArrayList<>(); Cursor cursor = resolver.query( MediaStore.Audio.Media.INTERNAL_CONTENT_URI, null, null, null, null ); // Một vài URI khác để sử dụng: // ContactsContract.Contacts.CONTENT_URI // Telephony.Sms.CONTENT_URI // CallLog.CONTENT_URI // MediaStore.Audio.Media.EXTERNAL_CONTENT_URI // MediaStore.Audio.Media.INTERNAL_CONTENT_URI cursor.moveToFirst(); int indexData = cursor.getColumnIndex(MediaStore.Audio.AudioColumns.DATA); int indexSize = cursor.getColumnIndex(MediaStore.Audio.AudioColumns.SIZE); int indexTitle = cursor.getColumnIndex(MediaStore.Audio.AudioColumns.TITLE); int indexDuration = cursor.getColumnIndex(MediaStore.Audio.AudioColumns.DURATION); int indexArtist = cursor.getColumnIndex(MediaStore.Audio.AudioColumns.ARTIST); int indexAlbum = cursor.getColumnIndex(MediaStore.Audio.AudioColumns.ALBUM); while (cursor.isAfterLast() == false) { // Để xem chi tiết các thuộc tính của Audio, có thể Log ra để nhìn: // for (int i = 0; i < cursor.getColumnCount(); i++) { // Log.e(cursor.getColumnName(i), cursor.getString(i) + ""); // } // Log.e("=======================", "========================= "); String data = cursor.getString(indexData); int size = cursor.getInt(indexSize); int duration = cursor.getInt(indexDuration); String title = cursor.getString(indexTitle); String artist = cursor.getString(indexArtist); String album = cursor.getString(indexAlbum); Bitmap thumbnail = takeBitmapFromData(data); Song song = new Song(); song.setAlbum(album); song.setArtist(artist); song.setData(data); song.setDuration(duration); song.setSize(size); song.setTitle(title); newSong.setThumbnail(thumbnail); songs.add(song); cursor.moveToNext(); } cursor.close(); return songs; } public Bitmap takeBitmapFromData(String linkData){ MediaMetadataRetriever mmr = new MediaMetadataRetriever(); mmr.setDataSource(linkData); byte [] data = mmr.getEmbeddedPicture(); Bitmap bitmap = BitmapFactory.decodeByteArray(data, 0, data.length); return bitmap; } } |
3. Tại MainActivity.class
1 2 3 |
ArrayList<Song> songs; systemAudio = new SystemAudio(this); songs = systemAudio.getAudioList(); |