0

我正在寻找一种解决方案(可能实现它),它允许我在我的 SD 卡(比如 25G)上创建一个缓存,一些“缓存层”将使用它来按需存储媒体。问题是我的所有媒体都不适合 32G SD 卡,所以我希望能够在我尝试播放时透明地下载我丢失的数据(即:我不想使用其他应用程序下载)在股票媒体播放器或画廊或其他任何地方。有谁知道这样的现有解决方案?我已经熟悉了为音乐执行此操作的各种专用应用程序,但我正在寻找更多的通用缓存,它可以缓存任何通过 LRU 传输的内容。我希望我家中的 NAS(或 S3、Dropbox、Ubuntu One 等)成为我的 Android 设备的扩展。

如果不存在,是否可以链接 ContentProviders?我可以创建一个 CacheProvider 来跟踪我的缓存中当前的内容和不存在的内容,并使用来自 CacheProvider 的 URI 来填充 MediaStore?到目前为止,我能找到的所有示例都表明,MediaStore 的输出始终是文件的 URI,因此我怀疑目前不可能。

4

1 回答 1

0

经过一点 POC,似乎单独使用 ContentProviders 是不可能的。虽然如果您覆盖ContentProvider.openfile()可以将提供程序链接在一起,但由于 MediaProvider 当前假定 _data 中的所有内容都指向文件或 HTTP 流,因此音乐应用程序将无法播放任何将另一个内容 URI 插入的内容_数据。如果将 MediaProvider 更改为处理内容 URI,那么这是可能的,但我认为实现这一目标的唯一方法是复制/粘贴 MediaStore 框架并重命名它,或者在 mod 中进行更改(如 CyanogenMod)。

于 2012-08-13T09:56:33.733 回答