- 图片文件对应数据库字段如下:
812 db.execSQL("CREATE TABLE files (_id INTEGER PRIMARY KEY AUTOINCREMENT,"
813 + "_data TEXT UNIQUE COLLATE NOCASE,_size INTEGER,format INTEGER,parent INTEGER,"
814 + "date_added INTEGER,date_modified INTEGER,mime_type TEXT,title TEXT,"
815 + "description TEXT,_display_name TEXT,picasa_id TEXT,orientation INTEGER,"
816 + "latitude DOUBLE,longitude DOUBLE,datetaken INTEGER,mini_thumb_magic INTEGER,"
817 + "bucket_id TEXT,bucket_display_name TEXT,isprivate INTEGER,title_key TEXT,"
818 + "artist_id INTEGER,album_id INTEGER,composer TEXT,track INTEGER,"
819 + "year INTEGER CHECK(year!=0),is_ringtone INTEGER,is_music INTEGER,"
820 + "is_alarm INTEGER,is_notification INTEGER,is_podcast INTEGER,album_artist TEXT,"
821 + "duration INTEGER,bookmark INTEGER,artist TEXT,album TEXT,resolution TEXT,"
822 + "tags TEXT,category TEXT,language TEXT,mini_thumb_data TEXT,name TEXT,"
823 + "media_type INTEGER,old_id INTEGER,is_drm INTEGER,"
824 + "width INTEGER, height INTEGER, title_resource_uri TEXT)");
- 核心字段解释
- android 媒体文件中的date_added和date_modified具体什么含义?
在 Android 的 MediaStore 中,date_added 和 date_modified 是两个重要的时间戳字段,它们用于描述媒体文件(如图片、视频、音频)的不同时间属性。下面是它们的具体含义:
date_added
- 定义: date_added 表示媒体文件被添加到 Android 媒体库的时间。
- 数据类型: Unix 时间戳(以秒为单位),指的是自 1970 年 1 月 1 日(UTC)以来的秒数。
- 含义: 这个时间戳反映了文件在 Android 媒体库中首次出现的时间。即使文件在外部存储中已经存在了很长时间,date_added 只会记录文件被 Android 媒体库索引和扫描的时间。这意味着,如果文件被删除然后重新添加到媒体库中,date_added 可能会改变。
- 使用场景: 用于确定媒体文件在媒体库中的相对“新鲜度”或索引时间。例如,在媒体库中显示最近添加的文件时,可以使用 date_added 排序。
date_modified
- 定义: date_modified 表示文件内容最后一次修改的时间。
- 数据类型: Unix 时间戳(以秒为单位),指的是自 1970 年 1 月 1 日(UTC)以来的秒数。
- 含义: 这个时间戳反映了文件内容最后一次被修改的时间。它对应于文件系统中记录的文件修改时间。例如,如果你编辑了一个图片文件,date_modified 会更新为最近的修改时间。
- 使用场景: 用于确定文件内容的最新状态,通常用于显示最近修改的文件或检查文件的更新状态。
4.示例代码
下面是一个示例代码,展示如何在 Android 中查询媒体文件的 date_added 和 date_modified 属性:
import android.content.ContentResolver;
import android.content.Context;
import android.database.Cursor;
import android.provider.MediaStore;
import android.util.Log;
public class MediaFileInfo {
public static void getMediaFileInfo(Context context) {
ContentResolver contentResolver = context.getContentResolver();
// 查询图片文件
Cursor cursor = contentResolver.query(
MediaStore.Images.Media.EXTERNAL_CONTENT_URI,
new String[]{MediaStore.Images.Media._ID, MediaStore.Images.Media.DATE_ADDED, MediaStore.Images.Media.DATE_MODIFIED},
null,
null,
null
);
if (cursor != null) {
while (cursor.moveToNext()) {
long id = cursor.getLong(cursor.getColumnIndexOrThrow(MediaStore.Images.Media._ID));
long dateAdded = cursor.getLong(cursor.getColumnIndexOrThrow(MediaStore.Images.Media.DATE_ADDED));
long dateModified = cursor.getLong(cursor.getColumnIndexOrThrow(MediaStore.Images.Media.DATE_MODIFIED));
Log.d("MediaFile", "ID: " + id + ", Date Added: " + dateAdded + ", Date Modified: " + dateModified);
// 将时间戳转换为日期格式
java.util.Date dateAddedDate = new java.util.Date(dateAdded * 1000); // DATE_ADDED 返回的时间是秒为单位
java.util.Date dateModifiedDate = new java.util.Date(dateModified * 1000); // DATE_MODIFIED 返回的时间是秒为单位
Log.d("MediaFile", "Date Added (formatted): " + dateAddedDate.toString());
Log.d("MediaFile", "Date Modified (formatted): " + dateModifiedDate.toString());
}
cursor.close();
}
}
}
- 解释
MediaStore.Images.Media.DATE_ADDED: 返回文件被添加到媒体库的时间。
MediaStore.Images.Media.DATE_MODIFIED: 返回文件内容最后一次修改的时间。 - 注意:
这些时间戳是以秒为单位的 Unix 时间戳,所以在转换为 java.util.Date 对象时需要乘以 1000。
这些时间戳可能会在某些特定情况下更新,例如文件被重新扫描或编辑时。
通过理解 date_added 和 date_modified 的含义,可以更好地管理和排序媒体文件,适应各种应用场景,如显示最近添加的照片或跟踪文件的内容更改。