Android 是否有方法将MediaStore.Audio的项与其他数据关联?

Android 是否有方法将MediaStore.Audio的项与其他数据关联?,android,performance,sqlite,android-contentprovider,mediastore,Android,Performance,Sqlite,Android Contentprovider,Mediastore,有两个要求 将某些声音属性(例如响度或节奏)与Android上的每个音频项相关联 使用这些属性高效地查询音频项目,例如获取最响亮的曲目 我通过ContentResolver查询MediaStore.Audio.Media.EXTERNAL\u CONTENT\u URI,以获取音频项并分析其属性 问题在于如何将这些属性与音频项关联-没有额外的MediaStore表列来保存用户数据 当前的解决方案是创建一个内部数据库,在其中存储声音属性,并使用MediaStore.Audio.Media.\u

有两个要求

  • 将某些声音属性(例如响度或节奏)与Android上的每个音频项相关联
  • 使用这些属性高效地查询音频项目,例如获取最响亮的曲目
我通过
ContentResolver
查询
MediaStore.Audio.Media.EXTERNAL\u CONTENT\u URI
,以获取音频项并分析其属性

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

当前的解决方案是创建一个内部数据库,在其中存储声音属性,并使用
MediaStore.Audio.Media.\u ID
作为音频项的键

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

  • 查询内部数据库并获取项目ID
  • 使用(…)子句中的
    WHERE\u ID查询
    ContentResolver
    ,并获取音频项
在一般情况下,这可能会带来性能问题(ID的长列表)。此外,当我想与内容提供商同步内部数据库时,事情会变得复杂,例如删除以前删除的音频项目的属性记录。内容提供商中没有关于已删除项目的信息,所以我需要比较两个来源的所有ID

因此,我关注的是:

  • 没有额外的
    MediaStore
    表列用于存储用户数据,对吗?与
    联系人contract.Data
    比较
  • 查询内部数据库并将其与内容提供商同步时出现问题。有没有办法减少它们
  • 可能的解决办法: