我对Android编程很陌生,现在我正在玩媒体商店进行个人测试项目。我遇到了几个双边问题..
我需要在mediastore中查询所有音乐文件的列表,这很简单 - 但是我需要将结果限制在某些文件夹中。我完成了这个(相当容易)使用SQL- * LIKE- where子句,并在这方面做得很好。
我现在需要一个独特的(如果这实际上是使用SQL,我可以简单地使用DISTINCT修饰符并完成此操作)所有艺术家的列表。现在这是基于给定路径中的歌曲。因此,我无法过滤从查询URI返回的列表:MediaStore.Audio.Artists.EXTERNAL_CONTENT_URI,并在第一步中添加基于文件路径的where子句。
所以,这让我留下的是使用我的初始查询并获取光标然后从光标中剥离欺骗(这是我现在的位置 - 太慢,尤其是1000多首歌曲) - 基于查询显然,艺术家而不是歌曲。
是否可以覆盖填充光标的实际查询?如下所示:覆盖查询并过滤数据最初放入光标的方式(删除递归条目)并立即返回正确的光标?内容提供商以及他们从未使用独特功能构建的方式超出了我的范围,但无论如何。来自URI查询命令的返回光标是否以可以覆盖的方式填充?这就是我目前还不清楚这一点。我希望能够直接包装getContentResolver()。query(xxx ..))命令来删除光标填充上的条目,如果可能的话 - 我做异步查询并使用单个查询语句(好吧,一个用于艺术家查询)会很棒。
我的另一个想法是通过基于预加载的数据集(光标)创建一个新的光标来预加载数据并操纵我的视图数据 - 这可能是要走的路,如果是的话 - 光标是最好的存储这些数据的方法?还担心有更大的图书馆的ram。
也许只有一种方法可以对URI进行DISTINCT查询 - 我只是不知道。
我已经看过这个问题(或其中之类的问题)多次问过没有针对URI而不是SQL后端的好答案。
谢谢大家,感谢您的帮助。
答案 0 :(得分:0)
关闭这一点,我决定按照预期使用媒体商店。如果它在设备上,则应该在您的媒体播放器中列出。
如果您查看任何媒体播放器(例如机器人或iPhone),他们会以这种方式对待设备。
当技术进步并且这变得司空见惯时,我会相应地调整我的内容提供程序包装器。
简单地说,可以做到 - 是的。这样做很容易,不是真的。经过深入思考,这是一款手机 - 将其视为一款手机。如果有人能够证明为什么这个“需要”被实施,那我就听见了。
谢谢,全部!