小米运动数据导出并做个性化统计

       小米运动数据是没有对外提供接口的,它本身提供的数据统计有不足之处,比如体重数据,在一天中不同时间体重数据时不一样的,把所有数据混合在一起看,是很难得出体重变化趋势的。所以,最好是能够获取到这些数据,根据时间段来对数据进行统计,能够更加准确地发现体重变化。在网上找了很多相关资料,并没有可以直接使用的,遇到很多坑,这里分享一下。后期可以考虑做一个更加个性化的界面。

一、效果图

二、操作步骤

1.备份小米运动的数据并导出

      找到小米手机的备份功能,只备份小米运动app,将生成备份文件,格式为bak,后面需要转换解压。在手机的文件浏览器中找到对应的备份文件,一般位于 /MIUI/backup/AllBackup 文件夹内,保存到电脑即可。

2.将bak文件转换成压缩文件

      首先下载WinHex,这个工具可以打开bak文件,用于去除文件头。打开之后,删除“41 4E”前面的数据,然后保存。将bak文件转换成压缩文件需要用到abe.jar,这里提供的abe.jar只能解压低版本的,

http://www.feifeiboke.com/down/201610/Unpack_Bak.rar。后面又在网上找到了最新的abe.jar文件,而且还有源码,可以成功转换bak文件,地址:https://github.com/DustinLi/android-backup-extractor。里面有构建好了的jar包,直接下载就可以使用。

3.读取数据

      数据文件位于apps/com.xiaomi.hm.health/db 文件夹下,睡眠和运动信息存储在origin_db_xxxx中,里面会有三个这样的文件,选择最大的哪个就是我们需要的文件。该文件为sqllite3格式的,用sqlite sduio就可以操作里面的数据了,使用类似操作msql数据库。

4.数据分析

      体重数据在WEIGHT_INFOS表里面,用sqlite studio打开“工具”--》“打开sql编辑器”就可以写sql进行数据查询分析了。sqllite的sql查询语法与mysql基本类似,只是一些函数的使用有些差别。下面将用到的sql提供出来:

select datetime(TIMESTAMP/1000,'unixepoch', 'localtime') AS time,WEIGHT*2/563 from weight_infos ORDER BY WEIGHT DESC;

-- 统计早晨的数据
select 
strftime('%Y-%m-%d',datetime(TIMESTAMP/1000,'unixepoch', 'localtime'), 'localtime') as day
,datetime(TIMESTAMP/1000,'unixepoch', 'localtime') as time 
,sum(WEIGHT*2)/count(TIMESTAMP) as data
from weight_infos where time>day||' 07:00:00' and time<day||' 10:00:00' group by strftime('%Y-%m',datetime(TIMESTAMP/1000,'unixepoch', 'localtime'), 'localtime');

-- 统计晚上的数据
select datetime(TIMESTAMP/1000,'unixepoch', 'localtime') AS time,WEIGHT*2 from weight_infos  where time>substr(time,0,11)||" 20:00:00" and time<substr(time,0,11)||" 24:00:00" ORDER BY WEIGHT DESC;

注意:这里字符串拼接用的是“||”而不是“+”,使用+号并不能成功拼接出数据。另外,使用strftime函数之后,时间不是24小时制了,晚上的数据就没有用这个函数。

三、展望

      这里只是简单做了数据的分析,计划做成一个开源项目,方便更多人使用。目前有服务器,但缺少时间来完善项目。周末会抽点时间来完善一下。有感兴趣的朋友可以私聊一起搞,人多力量大。小米运动app提供的数据分析使用起来真的很不方便。对运动、睡眠、健身等数据进行更多的分析,可以更好控制自己的健康状况。

  • 1
    点赞
  • 22
    收藏
    觉得还不错? 一键收藏
  • 4
    评论
导出三星手表的运动数据,您可以按照以下步骤进行操作: 1. 打开Samsung S-Health应用程序并导航到您的运动数据。 2. 在S-Health应用程序中,找到导出选项。这通常位于设置或菜单中。 3. 选择导出选项后,您可能需要选择要导出数据类型。在这种情况下,选择运动数据或步数数据。 4. 接下来,选择导出数据的格式。您可以选择CSV格式,这是一种常见的数据格式,可以在Python中轻松处理。 5. 确认导出选项后,S-Health应用程序将生成一个包含您的运动数据的CSV文件。 6. 将CSV文件从您的手机传输到您的计算机。您可以使用USB连接、云存储服务或电子邮件等方法进行传输。 7. 在计算机上使用Python编程语言打开CSV文件,并使用适当的库(如pandas)读取和处理数据。 通过这些步骤,您可以将三星手表的运动数据导出并在Python中进行进一步的分析和处理。请注意,具体的步骤可能会因您使用的三星手表型号和S-Health应用程序版本而有所不同。 #### 引用[.reference_title] - *1* *2* *3* [未越狱设备提取数据_从三星设备中提取健康数据](https://blog.csdn.net/weixin_26746401/article/details/108494653)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^control_2,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值