在手机上为照片编写自定义内容提供商

时间:2015-04-16 12:51:06

标签: android android-contentprovider

作为Android应用开发课程的一部分,我需要编写自己的ContentProvider。我正在制作的应用程序是一个简单的(不再那么确定)照片库应用程序,主要活动显示GridView中的缩略图,以及显示一个选定图像以及一些元数据的详细活动。我只是通过查询MediaStore.Images.Thumbnails和Images来完成工作,但是 - 正如我所说 - 我需要+想要学习如何“滚动我自己的”CP。

但是!我找到的每个教程都涉及到连接/查询SQLite数据库。我需要的是查询目录,一组文件(JPEG)。首先将所有照片都转储到数据库中是没有意义的,只是为了使CP部分“更容易”(意思是:遵循一些SQL-CP教程)。

所以:有人想帮我为此建一个CP吗?不要求有人“做我的功课”(顺便说一句,这是一个关于Udacity的免费Android课程 - 不是学校的东西),但我需要一些正确方向的建议和指示。我以为我会发布到目前为止我发布的内容,希望有人会发表评论!我正在关注的“模板”是WeatherContract和WeatherProvider from the Udacity course's "Sunshine" app(显然使用了SQLite)。

的URI

首先:我想支持的URI。它发生在我身上我需要两种“类型”:缩略图图像。对于其中每一个,应该可以为特定文件夹提供路径,为什么不让用户过滤某事 - 比如说 - (DATE_TAKEN)。最后,除缩略图外,用户可以指定要在详细活动中加载的特定图像。由于这不是数据库,我们没有“图像ID”,所以我想我们需要依赖文件名吗?

以下是我设想的URI(AUTH只是我应用的一些权限):

  1. content://AUTH/thumb在手机上提供所有缩略图(即等于MediaStore.Images.Thumbnails.EXTERNAL_CONTENT_URI?)
  2. content://AUTH/thumb/path/*提供指定目录中的所有照片(路径必须进行URI编码,正确,/变为%2F
  3. content://AUTH/thumb/year/#content://AUTH/thumb/path/*/year/#与上述相同,但按年过滤
  4. content://AUTH/photos在手机上提供所有照片MediaStore.Images.Media.EXTERNAL_CONTENT_URI
  5. content://AUTH/photos/year/#
  6. content://AUTH/photos/year/#content://AUTH/photos/path/*/year/#
  7. 最后,content://AUTH/photos/path/*/img/*给出一个(一个)特定图像(基于文件名,缺少数字唯一ID)
  8. “合同”

    考虑到这些URI,PhotoContract会是什么样子?我将发布以下评论到目前为止的代码,并在我处理它时更新它。

    内容提供商

    对于实现(PhotoProvider扩展ContentProvider),我猜有两种方法:打开文件阅读器从特定目录/路径列出* .jpg,将它们转储到MatrixCursor中,然后返回。或者,也许更简单,只需从MediaStore(缩略图或图像,取决于URI)获取光标,然后返回?为什么重新发明轮子?

0 个答案:

没有答案