高效获取 MediaStore 中音频文件的流派

发布于 2024-10-15 18:17:50 字数 218 浏览 2 评论 0原文

我正在尝试同步我自己的曲目和专辑数据库(包含附加数据)。到目前为止,我已成功从 MediaStore 中提取专辑和曲目。

我无法正确执行的是拉动曲目的流派。有人可以发布一些代码吗?我想避免查询每个曲目的数据库,因此如果可能的话,一些加载关联的代码(Genre.id <-> Audio.id)会很棒。

我正在努力解决的是使用内容提供商来获取 Genres.Members 信息。

I am trying to synchronize my own database for tracks and albums (that contains additional data). I have so far successfully pulled albums and tracks from the MediaStore.

What I cannot manage to do properly is to pull the Genres for the tracks. Could someone post some code? I'd like to avoid querying the database for each track, so if possible some code to load the association (Genre.id <-> Audio.id) would be great.

What I am struggling on is using the content provider to get the Genres.Members info.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

她比我温柔 2024-10-22 18:17:50

我会看看 Ringdroid 的优秀创建者是如何做到这一点的。 http://ringdroid.googlecode.com/svn -history/r37/trunk/src/com/ringdroid/SongMetadataReader.java

他们基本上首先检索流派名称和 ID,并使用它们可以轻松创建一个 content_uri,仅检索数据库中与这些流派匹配的歌曲。
但如果我是你,我会检查 id3 标签中不包含流派名称的文件是否存在“未知”或“空”流派

I'd take a look at how the excellent creators of ringdroid do this. http://ringdroid.googlecode.com/svn-history/r37/trunk/src/com/ringdroid/SongMetadataReader.java

They basically start by retrieving the genres names and ids and using those they can easily create a content_uri that retrieves only songs in the database that matches those genres.
But if I were you I would check whether there is an "unknown" or "empty" genre or not for the files that contain no Genre name in their id3 tag

被翻牌 2024-10-22 18:17:50

所以我最终做的是使用加载器和以下查询获取 SD 上的所有音频文件:

        loader = new CursorLoader(mActivity, MediaStore.Audio.Media.EXTERNAL_CONTENT_URI, 
                new String[] {Audio.Media._ID, Audio.Media.DATA}, 
                null, null, null);

然后检查它们是否以 .mp3 结尾,然后使用 jaudiotagger 并读取流派的 ide3 标签。

So what I ended up doing is getting all audio files on the sd with a loader and following query:

        loader = new CursorLoader(mActivity, MediaStore.Audio.Media.EXTERNAL_CONTENT_URI, 
                new String[] {Audio.Media._ID, Audio.Media.DATA}, 
                null, null, null);

Then i check if they end with .mp3 and I then use jaudiotagger and read the ide3 tags for genre.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文