Android图库(系统相册)的数据库

​ 最近参加了一个训练营,要做一个本地图片查看器的App(Android端),基础功能要支持图片列表的展示,参考了我的手机相册,它是按日期分类展示,于是我也想做成这样。

系统相册的样子:

网上搜索了一番,数据库中主要有3个字段跟时间有关的

  • date_added:图片添加的时间

  • date_modify:图片上一次修改的时间

  • date_taken:图片拍摄时间(不确定是不是,暂且这么认为)

分别用这3个字段按降序排序,最后发现date_taken的效果跟系统相册是一样的,于是只用了这个字段。

后来想看看数据库中的表长什么样,看有没有字段的定义,经过一番搜索,发现

图片数据库实际是 /data/data/com.android.providers.media/external.dbfiles表的视图

external.db中的表和视图如下:

1.该数据库文件从Android模拟器获取的方式:

①adb 命令

1.adb shell
2.su
3.找到文件路径 退出shell
4.拷贝 到 /sdcard/目录下(没有权限时需要这样做)
5.再从/sdcard/ 导出到电脑硬盘上

注:android 7.0的系统模拟器没有访问data/data的权限,su的权限都没有

②AndroidStudio(3.6.3) 中菜单栏View->Tool Windows->Device File Explorer

在这里插入图片描述

注:拷出来的时候.db-shm 还有.db-wal一并拷出来

2.表结构

该视图创建语句:

CREATE VIEW images AS SELECT _id,_data,_size,_display_name,mime_type,title,date_added,date_modified,description,picasa_id,isprivate,latitude,longitude,datetaken,orientation,mini_thumb_magic,bucket_id,bucket_display_name,width,height FROM files WHERE media_type=1

files表 建表语句

CREATE TABLE "files" (
	"_id"	INTEGER,
	"_data"	TEXT UNIQUE COLLATE NOCASE,
	"_size"	INTEGER,
	"format"	INTEGER,
	"parent"	INTEGER,
	"date_added"	INTEGER,
	"date_modified"	INTEGER,
	"mime_type"	TEXT,
	"title"	TEXT,
	"description"	TEXT,
	"_display_name"	TEXT,
	"picasa_id"	TEXT,
	"orientation"	INTEGER,
	"latitude"	DOUBLE,
	"longitude"	DOUBLE,
	"datetaken"	INTEGER,
	"mini_thumb_magic"	INTEGER,
	"bucket_id"	TEXT,
	"bucket_display_name"	TEXT,
	"isprivate"	INTEGER,
	"title_key"	TEXT,
	"artist_id"	INTEGER,
	"album_id"	INTEGER,
	"composer"	TEXT,
	"track"	INTEGER,
	"year"	INTEGER CHECK("year" != 0),
	"is_ringtone"	INTEGER,
	"is_music"	INTEGER,
	"is_alarm"	INTEGER,
	"is_notification"	INTEGER,
	"is_podcast"	INTEGER,
	"album_artist"	TEXT,
	"duration"	INTEGER,
	"bookmark"	INTEGER,
	"artist"	TEXT,
	"album"	TEXT,
	"resolution"	TEXT,
	"tags"	TEXT,
	"category"	TEXT,
	"language"	TEXT,
	"mini_thumb_data"	TEXT,
	"name"	TEXT,
	"media_type"	INTEGER,
	"old_id"	INTEGER,
	"storage_id"	INTEGER,
	"is_drm"	INTEGER,
	"width"	INTEGER,
	"height"	INTEGER,
	PRIMARY KEY("_id" AUTOINCREMENT)
);

3.这个.db文件macOS的打开方法之一

下载地址http://www.sqlitebrowser.org/

在这里插入图片描述

4.MediaStore.Images.Media.EXTERNAL_CONTENT_URI

​ 这个uri对象的getPath()方法返回的值是“/external/images/media”

  • 0
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值