Как я могу получить MediaMetaData, например, Album, Track, Titel, Albumart и т. Д. c. из MediaStore в Android 10 - PullRequest
0 голосов
/ 17 января 2020

Я долго пытался получить альбом, трек, длительность, обложку альбома из аудиофайлов, используя Android 10 mediaStore.

Что я сделал до сих пор: Открыть Намерение извлечь аудио-папку:

    Intent intent = new Intent(Intent.ACTION_OPEN_DOCUMENT_TREE);
    intent.addCategory(Intent.CATEGORY_DEFAULT);
    intent.addFlags(Intent.FLAG_GRANT_READ_URI_PERMISSION | Intent.FLAG_GRANT_PERSISTABLE_URI_PERMISSION);
    startActivityForResult(Intent.createChooser(intent, "Choose directory"), PICK_AUDIO_REQUEST);

Затем onActivityResult:

mUri = data.getData();
childrenUri = DocumentsContract.buildChildDocumentsUriUsingTree(mUri,
            DocumentsContract.getTreeDocumentId(mUri));

Перебирая курсор, я получаю DocumentID из audioFiles.

Cursor c = resolver.query(childrenUri, null, null, null, null);
while (c.moveToNext()) {
     int idColumn = c.getColumnIndex(MediaStore.Audio.Media.DOCUMENT_ID);
     String documentId = c.getString(idColumn);
}

Затем я открываю еще один курсор на mediaStore для запроса аудиоколонок;

String selection = MediaStore.Audio.Media._ID + " like ?";
String[] selectionArgs = new String[]{documentId};
Uri mediaUri = MediaStore.Audio.Media.EXTERNAL_CONTENT_URI;
Cursor mediaCursor = resolver.query(mediaUri,null,null,null,null);
while (mediaCursor.moveToNext()) {
    int albumIndex = mediaCursor.getColumnIndex(MediaStore.Audio.Media.ALBUM);
    String album = mediaCursor.getString(albumIndex);   
}

mediaUri: content://media/external/audio/media documentUri: content://com.android.providers.downloads.documents/tree/downloads/document/msf%3A23

Проблема: Мой mediaCursor.getCount () = 0, поэтому я не могу получить никаких результатов. Что не так в моем коде, так что я не смог получить, например, albumName от mediaStore.

Спасибо GGK

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...