基于Android平台传感器技术的运动监测应用

来源 :电脑知识与技术 | 被引量 : 0次 | 上传用户:xiaoyuzxcv123
下载到本地 , 更方便阅读
声明 : 本文档内容版权归属内容提供方 , 如果您对本文有版权争议 , 可与客服联系进行内容授权或下架
论文部分内容阅读
  摘要:随着Android手机的普及和研究者对其在日常生活中功能的拓展挖掘,Android手机的功能已经不再是单纯用于通话,而渐渐渗透到人们日常生活的各个方面。该文以运动监测作为切入点,利用Android平台提供的传感器接口,设计了一款基于Android平台传感器技术的运动监测应用,从而实现计步,俯卧撑计数等运动数据记录功能。
  关键词:Android;传感器技术;运动监测
  中图分类号:TP311 文献标识码:A 文章编号:1009-3044(2017)01-0063-04
  1 背景
  随着基于Android平台的手机的普及和研究者对其在日常生活中功能的拓展挖掘,以及基于Android平台的手机所配备的硬件(如:光线传感器、压力传感器)日益丰富,Android手机的功能已经不再是单纯用于通话,而渐渐渗透到人们日常生活的各个方面,例如:家居控制、运动监测。在运动监测功能中,需要充分利用Android平台给开发者提供的接口以及手机本身所配备的丰富的硬件,获取用户的运动基础数据,并通过相关算法进行加工和处理,从而实现通过手机对用户运动进行监测和数据记录。
  本文将简要介绍Android平台为开发者所提供的传感器接口以及简单的调用方法,并在此基础上设计一款运动监测应用,实现对用户计步、俯卧撑计数等运动记录功能。
  2 Android平台传感器
  在Android2.3 gingerbread系统中,Google公司提供了11种传感器供应用层使用。分别是:
  #define SENSOR_TYPE_ACCELEROMETER 1 //加速度传感器
  #define SENSOR_TYPE_MAGNETIC_FIELD 2 //磁力傳感器
  #define SENSOR_TYPE_ORIENTATION 3 //方向传感器
  #define SENSOR_TYPE_GYROSCOPE 4 //陀螺仪传感器
  #define SENSOR_TYPE_LIGHT 5 //光线感应传感器
  #define SENSOR_TYPE_PRESSURE 6 //压力传感器
  #define SENSOR_TYPE_TEMPERATURE 7 //温度传感器
  #define SENSOR_TYPE_PROXIMITY 8 //距离传感器
  #define SENSOR_TYPE_GRAVITY 9 //重力传感器
  #define SENSOR_TYPE_LINEAR_ACCELERATION 10//线性加速度传感器
  #define SENSOR_TYPE_ROTATION_VECTOR 11//旋转矢量传感器
  2.1 传感器分类
  以上11种传感器可分为3类:
  1)位移传感器,这些传感器测量沿三个轴线测量加速度和旋转。(包含加速度、线性加速度、重力、陀螺仪和旋转矢量传感器)
  2)环境传感器 ,这些传感器测量各种环境参数,例如周围的空气温度和压力,光线,和湿度。(包含压力,光线和温度传感器)
  3)位置传感器,这些传感器测量设备的物理位置。(包含距离、方向和磁力传感器)
  2.2 传感器使用
  以上11种传感器使用方法类似,本文仅以加速度传感器为例。
  1)Android所有的传感器都归传感器管理器 SensorManager 管理,首先获取传感器管理器
  SensorManager SensorManager = (SensorManager)getSystemService(Context,SENSOR_SERVICE);
  2)从传感器管理器中获取需要的传感器
  Sensor Speed = SensorManager.getDefaultSensor(Sensor.TYPE_ACCELEROMETER);
  3)实现传感器监听方法
  private SensorEventListener speedListener = new SensorEventListener(){
  @Override
  public void onAccuracyChanged(Sensor arg0, int arg1) {}
  @Override
  public void onSensorChanged(SensorEvent event) {
  float x = event.values[SensorManager.DATA_X];
  float y = event.values[SensorManager.DATA_Y];
  float z = event.values[SensorManager.DATA_Z];
  };
  4)注册传感器
  SensorManager.registerListener(speedListener,Speed,SensorManager.SENSOR_DELAY_NORMAL);
  5)注销传感器监听
  SensorManager.unregisterListener(speedListener);
  3 运动监测应用设计
  应用的整体架构如图1所示:
  3.1 客户端
  采用Fragment Viewpager作为基本UI框架,通过异步任务和多线程技术来实现访问服务器;通过Handler、BroadcastReceiver动态更新UI;通过Content Provider来实现不同Activity以及线程中数据的共享;通过Service来定时更新用户的位置信息。在运动监测的过程中,根据不同运动的特点,运用不同的传感器接口来实现运动监测。   3.2 服务端
  采用Servlet MySQL的基本框架,使用阿里云服务器作为应用的服务器,来实现与客户端的交互、数据访问以及操作处理。数据存储采用MySQL开源数据库,通过JDBC来实现Servlet与MySQL数据库之间的数据传输。
  服务端和客户端的数据交互通过JSON来进行封装,从而便于解析处理。
  3.3 运动检测算法设计
  1)计步监测
  考虑到用户在运动过程中运动速度相对规律,本文采用加速度传感器来实现计步功能。首先通过Android加速度传感器接口获取到运动过程中所产生的基础数据;然后对基础数据进行其可视化,绘制x-y-z加速度与时间的图像,如图2、图3所示:
  由于篇幅限制,上两张图展示的是运动过程中较为典型的两张图像,其中图2和图3的最大差别在于图2中X轴的曲线特征较为清晰的表现出了跑步的特征,而在图3中y轴的特征较为清晰的表现了运动的特征。而造成这一差别的原因在于用户在跑步过程中,手机所放置的位置。
  经过一系列不同速度、不同手机放置位置的测试和图像对比后,发现不管用户的手机如何放置,在运动过程中,X\Y\Z轴的图像总有至少一个是表现为近似周期性震荡曲线,并且曲线的峰值基本和用户跑步的步数是一致的。但是在用户以不同速度跑步时,这个峰值的大小是有区别的。
  因此,为了实现计步监测功能,笔者需要找到一个阈值,用于过滤出反应运动步数特征的有效值。为此笔者进行了一些测试,选取了展现相对静止时x-y-z加速度与时间的典型图像,如图4、图5所示:
  通过对基础数据进行对比分析,笔者最终选定阀值如表1所示:
  算法实现:
  float x = event.values[SensorManager.DATA_X];
  float y = event.values[SensorManager.DATA_Y];
  float z = event.values[SensorManager.DATA_Z];
  if(Math.abs(x)>14.3||Math.abs(x)>14.2
  ||Math.abs(x)>14.5)
  stepCount ;
  //一段计录结束后
  stepCount = stepCount/2;
  2)俯卧撑监测
  通过对俯卧撑运动特点的分析,笔者发现,在做俯卧撑的过程中,胸部位置所对应的地面位置光线强度变化明显,因此选择采用光线传感器来实现俯卧撑计数。示意图如图6、7所示:
  确定放置位置之后,笔者采集了做俯卧撑过程中光线传感器的基础数据值,并绘制了光线强度与时间的图像,如图8所示:
  通过光线强度与时间的图像可以看出,俯卧撑运动过程中,光线传感器的变化是非常规律的并且能够很清晰的反应光线俯卧撑的个数,即在停止过程中光线强度不变;在俯卧撑下降过程中,光线强度逐渐减小到特定值;在俯卧撑上升过程中逐渐增加到特定值。这种清晰的曲线特点使得俯卧撑计数变得相对简单。
  通过对图像的分析,发现和计步监测类似的,也需要从数据中找到一个阀值,用于区分是否触发记录一个俯卧撑。经过一系列的实验,综合考虑了外界光照环境及人体区别,本文最终选定阀值为5。
  算法实现:
  //整型处理
  light= (int) event.values[0];
  if(light<5){
  pushUpCount ;
  }
  //记录结束后,Count除2
  pushUpCount = pushUpCount/2;
  3.4 界面设计
  为了给用户以更好的体验,本运动监测应用采用简洁清晰的界面设计风格,突出主体,简单易用。图9、图10为应用部分效果图。
  4 安装及测试
  本运动监测应用是基于Android 2.1及以上版本平台的手机应用软件。本文将该应用安装在了Nexus5、三星s5等型号的手机上,并进行了测试。经过测试,俯卧撑数量监测误差在正负两个以内;步数监测效果稳定性一般,在慢跑状态下误差较小,在步行条件下误差不稳定。
  5 结束语
  本应用基于Android平台所提供的传感器API以及Android手机上常用的加速度传感器和光线传感器,通过对传感器数据进行分析,实现了记步监测以及俯卧撑监测。随着手机传感器的日益丰富,可以用于监测用户行为的传感器将日益增加,因此传感器选择以及算法都可以进一步改进,使得监测结果更加准确。
  参考文献:
  [1] 陈曦, 梁晔. 基于Android的“乐动我心”手机应用软件设计与实现[J]. 科技广场, 2013(10): 239-243.
  [2] 马小军, 王满. 基于Android平台的手机学吉他软件的开发[J]. 北京联合大学学报: 自然科学版, 2012, 26(1): 28-32.
  [3] 孫富宗, 梁晔. 基于Android平台的人性化超市辅助系统设计与实现[J]. 科技广场, 2013(9): 234-238.
  [4] 丁珏. 基于Android微心理App系统设计与实现[J]. 电脑知识与技术, 2016, 12(8): 56-57.
其他文献
近几年来,我国建筑企业的市场竞争日趋激烈,且现在的公路建设较往年在规模、投资上都有所放缓,“僧多粥少”已是建筑企业而临的客观危机。如何使企业在竞争力如此大的情况下,立于
文本通过与全球Internet资源对比的方法,评估中国地区Internet的独特特性,并在此基础上分析了采用RSS源采集中国地区Internet信息的可能性。
摘要:当前各个高校都非常重视课堂教学评价问题,数据挖掘作为一个新兴的技术受到越来越多的研究者关注,在各种知识决策活动领域应用非常广泛。该文阐述了层次分析法的基本原理,并以此来构建课堂教学评价体系,通过引入数据挖掘中的关联规则技术,来提高评价指标的完备性,能够有效地解决课堂教学评价体系构建问题。  关键词:数据挖掘;关联规则;层次分析法;教学评价  中图分类号:G642.0 文献标识码:A 文章编号
【摘要】本文简单介绍了会计模式的内涵与职能,重点探讨了如何构建乡镇卫生院的会计模式管理。仅供读者参考。  【关键词】乡镇卫生院;构建;会计模式;管理  社会经济的快速发展与我国医疗卫生制度的改革,推动了乡镇卫生院的财务管理的变革。会计是乡镇医院内部管理的重要构成内容,管理会计模式是否科学合理直接关系到医院经营管理的成败,所以构建科学的会计模式管理至关重要,也是乡镇卫生院亟需解决的难题。  1、会计
中职生想要实现全面发展,练就良好的口才是第一步。目前,我国中职生群体演讲能力较弱,对于个人的发展和就业都有严重的影响。本文主要针对当下中职生演讲能力薄弱的原因进行
大学生是否具有正确的劳动意识,与大学生的成长成才息息相关,更关系到社会主义事业的继承与发展。劳动教育是高校深化教育改革、落实素质教育一个重要的切入点。必要的劳动教
自改革开放以来,我国乡镇企业的发展取得了明显的成绩,为农村经济的发展、农民增收、推进农村现代化进程等做出了积极的贡献,成为整个国民经济的发展的一部分。但是,随着经济的持
随着我国经济的显著增长,高速公路在连接各地经济、推进各地经济交流与发展的过程中起到了至关重要的作用。为了满足我国社会经济的进一步发展,我国在高速公路建设方面所投入的
高血压是心血管疾病发病、致病和死亡的重要危险因素之一。特别是原发性高血压是一种没有明显自觉症状,仅以血压持续超过18.67/12.00kPa为特征的慢性病。多数病人没有疾病的主观
实施产学合作是高等职业教育的办学方向,也是提高办学水平,创建办学特色的有效途径。建立稳定、持续的产学合作运行机制,必须立足于“区域融合、校企互动”,运用市场化模式,充分调