有没有办法将MediaStore.Audio的项目与其他数据相关联?

时间:2014-06-11 17:34:32

标签: android performance sqlite android-contentprovider mediastore

有两个要求

  • 关联一些声音属性,例如响亮度或节奏,与Android上的每个音频项目
  • 使用这些属性有效地查询音频项目,例如得到最响亮的曲目

我通过MediaStore.Audio.Media.EXTERNAL_CONTENT_URI查询ContentResolver以获取音频项目并分析其属性。

问题是如何将这些属性与音频项相关联 - 没有额外的MediaStore表列来保存用户数据。

目前的解决方案是创建一个内部数据库,在那里存储声音属性,并使用MediaStore.Audio.Media._ID作为音频项的关键。

因此,为了获得最响亮的曲目,我需要

  • 查询内部数据库并获取项目ID
  • 使用ContentResolver子句查询WHERE _ID IN (...)并获取音频项

这可能会引入一般情况下的性能问题(长列表ID)。此外,当我想要将内部数据库与内容提供商同步时,事情会变得复杂,例如:删除以前删除的音频项目的属性记录。内容提供商中没有关于已删除项目的信息,因此我需要比较两个来源中的所有ID。

所以,我担心的是:

  1. 没有用于存储用户数据的其他MediaStore表列,对吗?与ContactsContract.Data比较。
  2. 使用内容提供程序查询和同步内部数据库时出现问题。有办法减少它们吗?
  3. 可能的解决方案:

0 个答案:

没有答案