android 媒体文件显示时间不对,date_added和date_modified分别代表什么含义。

embedded/2024/10/9 3:03:18/
  1. 图片文件对应数据库字段如下:
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)");
  1. 核心字段解释
    在这里插入图片描述
  2. 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 的含义,可以更好地管理和排序媒体文件,适应各种应用场景,如显示最近添加的照片或跟踪文件的内容更改。

http://www.ppmy.cn/embedded/108476.html

相关文章

tabBar设置底部菜单选项以及iconfont图标

tabBartabBar属性:设置底部 tab 的表现 ​ ​ ​ ​ 首先在pages.json页面写一个tabBar对象,里面放入list对象数组,里面至少要有2个、最多5个 tab, 如果只有一个tab的话,H5(浏览器)依然可以显示底部有一个导航栏,如果没有,需要重启后才有,小程序则报错,只有2个以上才可以…

springboot+vue+mybatis计算机毕业设计智慧篮球馆预约+PPT+论文+讲解+售后

近些年来,随着科技的飞速发展,互联网的普及逐渐延伸到各行各业中,给人们生活带来了十分的便利,智慧篮球馆预约利用计算机网络实现信息化管理,使整个智慧篮球馆预约的发展和服务水平有显著提升。 本文拟采用Eclipse开发…

使用 Spring Boot + MinIO 实现文件的分片上传、秒传、续传功能开发

使用 Spring Boot MinIO 实现文件的分片上传、秒传、续传功能开发 在当今的互联网应用中,文件上传是一个常见的功能需求。然而,传统的文件上传方式在面对大文件或不稳定的网络环境时,可能会出现性能瓶颈和上传失败的问题。为了解决这些问题…

1.ASRPRO天问--开发板介绍及第一次使用--开发板挖掘系列

目录 1. 前言 2. 正文 2.1 开发板 2.2 简介 2.3 有趣的实验 3. 备注 1. 前言 时光不问赶路人,一切尽在不言中,大家好,我是繁花,oh,不对,是繁华的地方不一定留下你的脚印。开学季的到来,也…

Kafka命令

版本:3.6.0 1.kafka-topics.sh Create, delete, describe, or change a topic 创建、删除、描述或更改主题 查看所有topic kafka-topics.sh --bootstrap-server centos701:9092,centos702:9092,centos704:9092 --list 描述topic详情 kafka-topics.sh --boots…

TeeChart助力科研软件:高效实现数据可视化

在当今的科学研究中,数据可视化已经成为理解和传播复杂信息的关键工具。尤其是在物理研究领域,科学家们经常需要处理大量的数据,并通过可视化将这些数据转化为更易理解的形式。TeeChart作为一个强大且灵活的图形展示工具,能够帮助…

构建数据恢复的硬件基础:MySQL中的硬件要求详解

在企业数据管理中,数据恢复的硬件要求是确保数据安全和业务连续性的关键环节。MySQL作为广泛使用的数据库系统,其数据恢复的硬件要求对于实现有效的备份策略至关重要。本文将深入探讨如何在MySQL中实现数据恢复的硬件要求,包括硬件选择、硬件…

【leetcode详解】爬楼梯:DP入门典例(附DP通用思路 同类进阶练习)

实战总结&#xff1a; vector常用方法&#xff1a; 创建一个长为n的vector&#xff0c;并将所有元素初始化为某一定值x vector<int> vec(len, x) 代码执行过程中将所有元素更新为某一值x fill(vec.begin(), vec.end(), x) // 更多实战方法欢迎参考文章&#xff1a;…