1

我正在尝试制作 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 调用以获取歌曲列表的流服务,或者它们只是硬编码假歌曲以显示以供测试。我正在尝试允许该服务浏览设备本身上的音乐文件。

4

1 回答 1

1

我也尝试在我的应用程序中做同样的事情,和你一样碰壁。最后我想出了如何使用 Android 的新Paging library来做到这一点。您必须在服务端使用带有 ContentResolver 的游标才能获取设备上的媒体项,但为了不迭代所有游标的记录只是为了在 onLoadChildren() 方法中返回子项,我使用分页库仅在客户端/UI 端返回用户此时感兴趣的块。你可以在我写的一篇文章中了解它,我还用代码示例演示了这个概念。

于 2018-06-24T19:10:52.173 回答