APP下载

基于Android的运动健康分析系统

2018-01-15刘璐王子贤周洪利董苏史久琛

现代计算机 2017年34期
关键词:步数个人账户热量

刘璐,王子贤,周洪利,董苏,史久琛

(大连理工大学软件学院,大连116621)

0 引言

科技手段可以帮助人们了解自身体能状况,提高自身身体素质,随着芯片产业和物联网的快速发展,使用传感器对人类身体及个人运动进行监测和管理,成为一个最具应用价值的研究方向[1]。在众多的传感器集成平台中,智能手机平台是最重要、最普及的一类。Android系统是由美国谷歌公司开发的开源手机操作系统,该平台由操作系统、中间件、用户界面和应用软件组成,是以开放特性闻名的具有真正移动特性的操作系统[2]。平台本身支持多种传感器,利用Android平台进行人体运动及体能方向的研究可以充分利用平台的移动性、开放性。

本系统是一种基于Android平台开发的运动健康分析软件,主要研究了以下两个问题:传感器数据的采集与处理,以及根据人体条件(如体重、年龄)智能判断合理运动量和食物卡路里合理摄取量。

1 研究现状

Talking Data 2014移动互联网数据报告显示,在iOS与Android两个平台上使用软件进行健康管理的用户规模庞大,并且增长速度不断提高。例如,咕咚、乐动力跑步等健康类App的用户量已超过千万,Nike Training、超级减肥王等App下载量增长速度超过300%[3]。健身类App辅助指导用户进行锻炼身体,改变了用户需要抽出固定时间段进行锻炼的情况,用户可以选择合适的场所甚至是在家锻炼身体,更加适应生活压力大,工作繁重的用户,因此受到了很多人的欢迎。纵观各种健身锻炼软件,能够将运动和饮食情况结合起来的却少之又少。而本软件不仅包含用户最常见的锻炼方式,例如步行和跑步,还结合了卡路里摄取平衡的计算,更好地辅助用户锻炼身体。除此以外,本软件界面简洁,功能完善且操作友好。

2 系统设计

本软件的系统架构图如图1所示,包括典型运动检测、卡路里均衡、交流平台三个模块。

典型运动检测模块包括计步和跑步检测两个子模块,功能为检测用户步数和记录跑步信息。卡路里均衡模块包括用户特征推荐、卡路里计算两个子模块,功能为根据用户身体情况计算每日推荐步数和每日推荐卡路里摄入量,记录每日食物摄取情况以及根据以上信息生成卡路里消耗数目建议。交流平台模块包括个人账户和论坛两个子模块,功能包括为建立用户个人账户、发送用户动态及接收其他用户动态。

3 典型运动检测模块

本模块的主要作用是检测用户的运动情况,包括每日步行数和跑步量,并根据用户的身体状况,推测用户的步长,从而计算用户每日步行公里数,然后以Android通用的轻量级数据库SQLite保存到本地,并以日历的形式展示给用户。

图1 系统架构图

2.1 计步算法

系统使用Android4.4新增的STEP_DETECTOR以及STEP_COUNTER传感器。其中STEP_COUNTER是计步传感器,用于记录激活后的步伐数。STEP_DETECTOR是步行检测传感器,用户每走一步就触发一次事件。

STEP_DETECTOR通过分析加速度计的输入识别用户何时走步,紧接着每走一步都会触发一个事件。而STEP_COUNTER则是跟踪自从上一次设备重新启动以来用户所有的步行数,每当计数更改,都会触发一个事件。虽然传感器的逻辑和管理内置于平台和底层硬件,在应用程序中不需要维护自己的检测算法,但是STEP_COUNTER中每次设备重新启动都会将数据清零,用户体验感较差,故重写了STEP_COUNTER的计数函数,通过不断备份步数保存用户即时步数不丢失。除此以外,因为这两种传感器都实现了硬件低功耗,系统的整体功耗也随之下降了许多,不会成为用户的电量“杀手”。计步算法流程如图2所示。

2.2 跑步算法

(1)GPS定位

系统需要配置GPS定位权限。为保护用户信息安全,在Android 6.0以后,Android系统取消了安装时即赋予该App所有权限的机制,尤其对于一些“隐私性”权限,App需要在运行时逐个询问用户请求授予权限。每次用户运行跑步模式,系统都会请求获取权限以定位用户位置。本系统采用了高德地图Android API移动定位,在高德开发者官方网站上获取Key,并配置相关参数以启动定位,应用程序通过使用API,可以无缝的在基站定位、Wi-Fi定位及GPS定位间切换。

(2)跑步路线绘制

系统通过自定义Marker标记并记录位置经纬度值,并通过BitmapDescriptor设置自定义图标。当用户点击开始跑步时,每两秒获取一次用户的GPS数据,将给出的定位点连接即形成路线。主要利用Android的动画机制绘制路线。

图2 计步流程图

2.3 运动状况统计功能

系统采用Android常用的轻量级数据库SQLite存储用户最近7天的运动情况,并以日历栏的形式呈现给用户,方便用户对比每日运动量。除此以外,系统利用Android的Notification消息推送机制,可以使用户退出软件后,不需打开软件仍可以在通知栏查看每日运动步数,更加方便用户的使用。

3 卡路里均衡模块

卡路里均衡模块的功能为根据用户个人信息计算推荐健康建议。卡路里均衡模块包括用户特征推荐,卡路里计算两个子模块。

3.1 用户特征推荐算法

每位用户都具有自身的身体特征,包括性别、年龄、身高和体重。一个正常人每日所需的热量和其体重相关,每小时摄取热量和体重的关系,约为1千卡/小时/千克,即4.186千焦/小时/千克。所以,一个重50千克的成年人每日所需的正常平均热量Q如下:

人一天内消耗掉的总热量为基本消耗热量(人体基础代谢消耗掉的热量)与运动消耗热量(日常生活动作消耗掉的热量)之和。按照性别和年龄可由表1中几个公式表示(其中体重用W/kg表示,活动系数用K表示)

表1 热量消耗公式

故当用户输入个人基本信息时,系统根据用户身体情况计算出每日推荐卡路里消耗量。

3.2 卡路里计算器

本系统将常见的食物分为“蔬菜”、“水果”、“主食”及“肉类”四种。不同的食物产生不同的能量,通过RecycleView显示100克食物中所含能量。对于肥胖症、糖尿病、高血压等慢性病患者来讲,控制每天身体所摄取的能量,是减轻他们本身病变的方法。因此,不仅仅是对患者,对普通用户也有必要为每一种食物测量所含的能量,以供用户计算每餐摄入的总能量。用户在RecycleView中点击条目,输入摄取克数,点击保存后,系统便将数据插入到数据库中保存,以供后续处理。

系统会根据用户特征推荐算法计算得出每日推荐步数,然后计算得出活动系数进行乘法运算。所以当用户输入个人基本信息时,系统会自动根据用户数据计算得到每日推荐卡路里消耗数目。用户可以根据系统给出的每日所需热量,每日卡路里消耗数目,每日推荐卡路里消耗数目来合理规划自己的活动。

4 交流平台模块

交流平台模块的功能为通过搭建服务器,为用户建立个人账户并实现动态发送信息和刷新获取信息。交流平台模块包括个人账户子模块和论坛模块。系统使用Android网络开源框架OKHttp,这是目前较为常用的安卓端轻量级框架,由移动支付Square公司设计用于替代HttpUrlConnection和Apache HttpClient。

4.1 用户个人账户模块

系统为用户搭建服务器,为用户建立个人账户,将用户的基本信息和数据保存到MySQL数据库中。当用户退出账户后重新登录时,系统将从服务器获取用户信息并自动填写,方便用户使用,保障用户数据在更换设备后不会丢失。为保护用户隐私,系统利用OKHttp的post方法向服务器发起用户注册和登陆。个人账户界面如图3所示。

图3 个人账户界面

4.2 论坛模块

论坛模块包括用户向服务器发送文字、图片动态以及从服务器获取其他用户发送的动态。用户可选择不超过六张图片上传,系统使用Android Retrofit 2.0框架,设计了FileUploadService接口并实现了单张与多张图片上传的解决方案。上传图片时,系统使用Http multipart/form-data的上传报文格式,并调用photopicker库、photopicker库中封装了选取图片、使用相机,查看和删除选取图片等功能。论坛界面如图4所示。

图4 论坛界面

5 结语

基于Android的运动健康分析系统可以根据用户个人身体信息及用户每日输入的食物摄取情况为用户提供步行数目参考和卡路里摄入参考,具有界面用户友好度高、功能完整、将卡路里摄取与运动相结合等特点。下一步可以重点设计社交模块,增加点赞及评论功能。

[1]周洪波.物联网:技术、应用、标准和商业模式[M].北京:电子工业出版社,2011.

[2]杨丰盛.Android应用开发揭秘[M].北京:机械工业出版社,2010.

[3]Talking Data移动互联网大数据平台.Talking Data 2014移动互联网数据报告[R/OL].(2015,01,21).http://mi.talkingdata.com/report-detail.html?id=427

猜你喜欢

步数个人账户热量
用皮肤热量发电
楚国的探索之旅
季铵型变湿再生材料CO2吸附热量迁移研究
微信运动步数识人指南
莆田市职工医保个人账户资金可购买与基本医保相衔接的商业补充健康保险
莆田市职工医保个人账户资金可购买与基本医保相衔接的商业补充健康保险
国人运动偏爱健走
“只吃菜不吃饭”,糖尿病易“找上门”
工行不再受理新的个人账户综合理财业务
当包装Logo被热量值取代,“吃货”三思