Android开发:如何获取三星健康中记录的实际时间而非插入时间?
解决Samsung Health获取手动录入记录实际时间的问题
嗨,我正好清楚这个问题的解法!你碰到的情况很典型——HealthConstants.Weight.CREATE_TIME和UPDATE_TIME本质是系统层面的时间(分别对应数据插入Samsung Health数据库的时间、最后一次更新数据库记录的时间),并不是你手动设置的记录实际发生时间。
要获取你修改的那个真实记录日期,你需要用到HealthConstants.Weight.START_TIME这个常量。
为什么是START_TIME?
在Samsung Health的数据模型里,START_TIME字段就是专门用来存储记录的实际发生时间的:
- 当你手动录入体重数据并修改日期时间时,这个值会被同步设为你指定的时间(比如你例子里的
FRI, 19 JAN 2018, 16:33) - 而
CREATE_TIME是这条数据被写入数据库的系统时间(你的例子里是MON, 22 January 2018 10:41:39) UPDATE_TIME则是这条数据最后一次被修改(包括系统同步、再次编辑等操作)的数据库时间
代码示例参考
你可以在查询体重数据时,把START_TIME加入请求的属性列表:
// 构建体重数据查询请求 HealthDataRequest weightRequest = new HealthDataRequest.Builder() .setDataType(HealthConstants.Weight.HEALTH_DATA_TYPE) .setProperties(new String[]{ HealthConstants.Weight.START_TIME, HealthConstants.Weight.WEIGHT, HealthConstants.Weight.CREATE_TIME // 可以用来对比验证 }) .build();
这样获取到的START_TIME对应的就是你手动设置的记录实际时间啦!
内容的提问来源于stack exchange,提问作者e.k




