Не удается получить все аудио файлы на устройстве из Mediastore.Аудио

#java #android #audio

#java #Android #Аудио

Вопрос:

Я использую contenResolver для запроса всех песен из Mediastore.Аудио. Вот код:

 package com.example.beethozart

import androidx.appcompat.app.AppCompatActivity
import android.os.Bundle
import android.provider.MediaStore
import timber.log.Timber
import java.io.File

class MainActivity : AppCompatActivity() {

        private fun getAudioDirectories() {

            val uri = MediaStore.Audio.Media.EXTERNAL_CONTENT_URI
            contentResolver.query(uri, null, null, null, null)?.let {
                it.moveToFirst()

                val pathIndex = it.getColumnIndex(MediaStore.Audio.Media.DATA)

                do {
                    val path = it.getString(pathIndex)
                    Timber.i(path)
                } while (it.moveToNext())
            }
        }

    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_main)

        getAudioDirectories()
    }
}
 

Проблема в том, что он находит не все песни с устройства, а только некоторые песни в определенной папке. Вот журнал:

 2021-02-10 14:15:53.793 29484-29484/com.example.beethozart I/MainActivity: /storage/emulated/0/Android/media/com.Slack/Notifications/Slack - Ding.mp3
2021-02-10 14:15:53.793 29484-29484/com.example.beethozart I/MainActivity: /storage/emulated/0/Android/media/com.Slack/Notifications/Slack - Boing.mp3
2021-02-10 14:15:53.794 29484-29484/com.example.beethozart I/MainActivity: /storage/emulated/0/Android/media/com.Slack/Notifications/Slack - Drop.mp3
2021-02-10 14:15:53.794 29484-29484/com.example.beethozart I/MainActivity: /storage/emulated/0/Android/media/com.Slack/Notifications/Slack - Tada.mp3
2021-02-10 14:15:53.794 29484-29484/com.example.beethozart I/MainActivity: /storage/emulated/0/Android/media/com.Slack/Notifications/Slack - Plink.mp3
2021-02-10 14:15:53.794 29484-29484/com.example.beethozart I/MainActivity: /storage/emulated/0/Android/media/com.Slack/Notifications/Slack - Wow.mp3
2021-02-10 14:15:53.795 29484-29484/com.example.beethozart I/MainActivity: /storage/emulated/0/Android/media/com.Slack/Notifications/Slack - Here you go.mp3
2021-02-10 14:15:53.795 29484-29484/com.example.beethozart I/MainActivity: /storage/emulated/0/Android/media/com.Slack/Notifications/Slack - Hi.mp3
2021-02-10 14:15:53.795 29484-29484/com.example.beethozart I/MainActivity: /storage/emulated/0/Android/media/com.Slack/Notifications/Slack - Yoink.mp3
2021-02-10 14:15:53.796 29484-29484/com.example.beethozart I/MainActivity: /storage/emulated/0/Android/media/com.Slack/Notifications/Slack - Knock brush.mp3
2021-02-10 14:15:53.796 29484-29484/com.example.beethozart I/MainActivity: /storage/emulated/0/Android/media/com.Slack/Notifications/Slack - Whoa.mp3
2021-02-10 14:15:53.796 29484-29484/com.example.beethozart I/MainActivity: /storage/emulated/0/Android/media/com.Slack/Notifications/Slack - Incoming call.mp3
 

Есть ли какой-нибудь способ это исправить?

Комментарии:

1. Пожалуйста, укажите полные пути к файлам, которые не найдены.

2. getAudioDirectories() Что такое имя?

3. @blackapps Не удается найти все песни, не принадлежащие /storage/emulated/0/Android/media/com.Slack/Notifications/Slack (например,/storage/emulated/0/Android/media/audio.mp3). Когда я копирую другой аудиофайл в эту папку, его можно найти. Например,

4. Как вы точно копируете? Или какое приложение это делает? И кто или как или какое приложение поместило эти файлы в этот каталог, которые не найдены? Или найдены.

5. Если вы помещаете только файлы в каталоги, то происходит большое изменение, о котором хранилище мультимедиа не знает. Итак, как вы это сделали? MediaStore знает о файлах только в том случае, если он проиндексировал / отсканировал их раньше. Как насчет приложения Галерея или Фото или фотографии на вашем устройстве… они их показывают?