MediaBrowserService, где взять медиа-файлы в onLoadChildren

Я пытаюсь сделать MediaBrowserService. Раньше, когда я хотел отобразить все музыкальные файлы, фактически находящиеся на устройстве, я использовал ContentResolver и загружал курсор из MediaStore.

Я не могу понять, где я должен сделать это в MediaBrowserService.

Есть метод: onLoadChildren

Примеры, которые я нахожу, выглядят так:

    @Override
public void onLoadChildren(
        @NonNull final String parentMediaId,
        @NonNull final Result<List<MediaBrowserCompat.MediaItem>> result) {
    result.sendResult(MusicLibrary.getMediaItems());
}

У меня вопрос, могу ли я использовать курсор ContentResolver в этом методе, чтобы вернуть список MediaItems? Или есть какой-то другой внутренний метод, чтобы пройти через устройство и получить все музыкальные файлы? Только примеры, которые я вижу в Интернете, - это потоковые сервисы, которые выполняют HTTP-вызов для получения списка песен, или они просто жестко кодируют фальшивые песни для отображения для тестирования. Я пытаюсь разрешить службе просматривать музыкальные файлы, которые находятся на самом устройстве.

1 ответ

Я также пытался сделать то же самое в своем приложении, ударив о ту же стену, что и вы. Наконец, я понял, как это сделать, используя новую библиотеку подкачки Android. Вы должны использовать курсор с ContentResolver на стороне службы, чтобы извлечь элементы мультимедиа на устройстве, но чтобы не выполнять итерацию всех записей курсора, просто чтобы вернуть дочерние элементы в методе onLoadChildren(), я использую библиотека подкачки для возврата только тех кусков, которые интересуют пользователя в данный момент на стороне клиента / пользовательского интерфейса. Вы можете прочитать об этом в посте, который я написал, где я также демонстрирую концепцию с примерами кода.

Другие вопросы по тегам