摘" 要:随着生活成本的提高和工作压力的增大,越来越多的人们意识到了运动的重要性。所设计的运动管理系统APP基于Android平台开发应用程序,采用SQLite数据库存储用户的基本信息,同时使用Service服务获取天气信息,并结合用户当下的身体状态,有效地制定个性运动计划,实现运动目标。通过测试,该APP具有良好的稳定性和可靠性,可为人们日常锻炼提供适合的运动方案,从而提高身体素质。
关键词:Android平台;运动管理;系统;软件编程
中图分类号:TP311.5" 文献标识码:A" 文章编号:2096-4706(2024)21-0083-05
Design and Implementation of Exercise Management System APP Based on Android
YAO Jiaxu
(Shandong Huayu University of Technology, Dezhou" 253034, China)
Abstract: With the increasing living cost and working pressure, more and more people are aware of the importance of exercise. The designed exercise management system APP is based on the Android platform to develop application, and uses SQLite database to store the basic information of users. At the same time, it uses the Service to obtain weather information, combines with users current physical state, and effectively develops a personalized sports plan to achieve exercise goals. Through testing, this APP has good stability and reliability, which can provide a suitable exercise program for peoples daily exercise, so as to improve their physical quality.
Keywords: Android platform; exercise management; system; software programming
0" 引" 言
计算机技术的飞速发展,让各行各业的效率和方式得到了极大的提升和改变,人们生活中的各个方面也在互联网的影响下发生了变化,运动管理系统APP也迅速融入大众的日常生活中,方便了用户根据自身情况制定个性运动计划,提高个人的身体素质。本文使用Android设计运动管理系统,采用超文本传输协议使数据进行传输,基于Android操作系统平台的智能手机为客户端,与作为工作站的服务器端实现数据操作。用户通过手机客户端进行信息的注册、添加运动计划、查看步数记录、监测心率等,并根据得到的数据进行运动分析。本系统是在Windows 10操作系统下,使用AndroidStudio开发工具,选择C/S结构实现的。
1" 需求分析及功能设计
为了满足个性、便利地帮助用户制定运动计划和管理用户信息的要求,运动管理系统APP主要包括4个功能界面:运动界面,发现界面,心率界面,我的界面。运动界面主要显示天气信息和运动信息;发现界面用来添加运动任务;心率界面用来测试心率;我的界面用来更改个人信息、查看运动计划、运动历史等内容,具体的功能模块图如图1所示。
2" 客户端/服务器模式简介
客户端/服务器模式,即C/S模式(Client/Server),是计算机软件协同工作的一种模式。C/S模式是一种常见的软件应用程序架构,有两个主要组件:客户端和服务器。客户端是向用户提供界面并与用户直接交云的应用程序部分,而服务器则在网络的另一端运行,负责处理来自客户端的请求,执行操作,并将结果返回给客户端。系统技术架构图如图2所示。
在这种模式中,客户端和服务器通常通过网络连接进行通信,它们执行的任务和所承担的责任是不同的。服务器通常配置有必要的资源和服务,以支持一个或多个客户端的需求。这种分工允许客户端和服务器独立地进行优化和升级,提高了整个系统的效率和可扩展性。
3" 系统设计及功能实现
为确保APP的使用率以及稳定性,在开展各项具体模块设计之前,首先根据用户的需求进行分析,以确保APP的每个界面设计更好地融入需求,同时APP使用了简洁易懂的控件,实现了便捷、舒适、友好的宗旨[1]。
3.1" 注册界面功能
运动管理系统APP是一款基于AndroidStudio内置虚拟机运行的程序[2]。程序运行后,首先进入APP注册界面,该界面实现用户使用APP前的个人信息注册,如图3所示。个人信息注册完成后,点击下一步,继续完善个人体重与步长设置,设置完成后用户注册结束,程序进入主页面,如图4所示。注册界面用于用户第一次使用系统,注册完成后,点击制定计划按钮,该按钮控件实现OnClickListener接口并重写onClick()方法,在此方法中通过调用getText()方法获取用户输入的注册信息[3],同时调用网络接口类将用户的信息发送给服务器,由服务器端将处理完成的数据插入数据库对应的表中。
由于SQLite的简单性、灵活性和高效性,它广泛应用于各种移动应用程序中。移动应用程序通常需要处理各种类型的数据,例如用户配置信息、日志数据、位置数据等[4]。SQLite的类型系统能够满足这些需求,并提供高效的数据存储和查询功能,这也是Android移动设备采用SQLite数据库的重要原因之一。客户端实现注册部分代码如下:
public void onClick(View v) {
switch (v.getId()){
case R.id.boy: //男
gender_str = getResources().getString(R.string.boy);break;
case R.id.girl: //女
gender_str = getResources().getString(R.string.girl);break;
case R.id.input_birthday: //获取生日信息
case R.id.input_height: //获取身高信息
saveMessageOne();default:break;}//保存资料
3.2" 运动界面功能
运动界面是本系统的重点模块,该界面主要展示用户的运动步数、运动的总千米数等内容,方便用户及时调整自己的运动进度。如图5所示,进入该界面后,客户端调用传感器管理器,该管理器用来帮助手机注册传感器,同时设置传感器的具体类型为重力传感器(加速度传感器)。重力传感器的工作原理,主要是对方法onTransducerChanged()进行回调重写,回调时需要先设置一个定时服务唤醒传感器监听器,用户在运动时监听器能够感应到参数的变化从而回调方法,进而判断手机在震动时的加速度是否大于某个临界值[5],若满足设定的条件,则进行一次步数的记录,并在数据界面进行显示。部分实现代码如下:
public void onTransducerChanged(TransducerEvent e) {
detector = new StepDetector(this);//实例化传感器对象
detector.walk = 1;//设置步数从一开始
// 获取传感器的服务,初始化传感器
mSensorManager=(SensorManager)this.getSystemService(SENSOR_SERVICE);
mSensorManager.registerListener(detector,mSensorManager.getDefaultSensor(Sensor.TYPE_ACCELEROMETER),SensorManager.SENSOR_DELAY_NORMAL);
totalstep++;// 步数的累加}}}
定位服务是统计运动总千米数的关键,该功能主要是通过获取实时地图实现的。和手机传感器一样,初始化地图需要重写对应的回调方法initLocation(),此方法是百度地图检测到手机发生位移后返回位移参数的具体过程[6],该过程需要设定发起定位请求的间隔时间大于等于1 000毫秒才是有效位移(定位结果坐标系)。初始化完成后调用setOpenGps()方法设置打开GPS与GPS扫描频率,若GPS开启失败,也可开启网络定位与离线定位,两者的定位结果也是有效的,只需要在初始化定位方式时将上述两种方式追加上即可实现。部分实现代码如下:
private void initLocation(){
// 定位初始化
LocationClientOption opt = new Location-ClientOption();
opt.setCoorType(\"bd09ll\");//设置返回的定位结果坐标系
int span=1000 * 10;
opt.setScanSpan(span);//设置请求的间隔大于等于1000毫秒
opt.setOpenGps(true);//设置是否启动GPS
mLocationClient.setLocOption(opt);
mPlat = (MapView) view.findViewById(R.id.mPlat);//绑定地图控件
return myView;//返回定位内容
private StringBuffer s = 1;
s.append(\"网络定位成功\");
s.append(\"离线定位成功\");}
3.3" 发现界面功能
发现界面的主要功能是让用户自主的添加运动计划,通过运动计划的添加,APP可以有效地提醒用户进行对应的运动练习,如图6所示。当用户选择完运动项目后,点击添加新计划,用户还需设置所选择运动的开始时间和结束时间,以便APP准确提醒用户完成运动锻炼。如图7所示。部分实现代码如下:
final ContentValues values = new ContentValues();
//1.存入运动类型
values.put(\"sport_type\" , type);
//2.存入运动类型名称
values.put(\"sport_name\" , title_name);
//3.存入开始年月日
values.put(\"start_year\" , start_year);
values.put(\"start_month\" , start_month);
values.put(\"start_day\" , start_day);
//4.存入结束年月日
values.put(\"stop_year\" , stop_year);
values.put(\"stop_month\" , stop_month);
values.put(\"stop_day\" , stop_day);
//5.存入设置的时间
values.put(\"set_time\", nowTime);
3.4" 心率界面功能
心率界面是本系统的核心模块,主要功能是当用户完成运动计划后,移动终端通过调用硬件部分摄像头实时监测用户的心率变化,并采用XYSeries图表绘制类实现心率曲线图的绘制。首先在系统中引入Maven和JitPack的依赖[7],同时将界面中用来获取与展示用户心率的控件进行绑定,当用户点击心率测试开始按钮,后置摄像头开启,将手指放在摄像头处后,已完成绑定的按钮控件响应onClick()方法收集用户的心率变化数据,进度条类ProgressBar会按照预先设定好的测试时间展示测试的进度,该类类似于收集数据时所设定计时器的可视化控件,当测试进度条闭环后心率数据收集完成,随后调用surfaceview()方法对数据进行分析,以及调用setChartSettings()方法和setColor()方法设定图像的展示与颜色,最后在工具类Utils中调用showChart()方法展示曲线图。因为该功能的数据是动态变化的,所以需要启动线程实时刷新。心率测试效果如图8所示。部分代码如下:
private SurfaceView surview;//声明图表控件
surview = (SurfaceView) view.findViewById(R.id.surview);//绑定控件
XYSeries r = new XYSeries();//设置图表中曲线本身的样式
r.setLineWidth(1); //设置粗细
r.setChartSettings(1);设置显示。
r.setColor(Color.RED);//设置红色。
由于该功能需要通过程序操作移动终端调用摄像头,因此需要提前给APP在配置文件AndroidManifest.xml中配置相应的摄像头使用权限。实现代码如下:
lt;!-- 调用摄像头权限 --gt;
lt;uses-feature android:name=\"android.hardware.camera\"/gt;
lt;uses-feature android:name=\"android.hardware.camera.autofocus\"/gt;
3.5" 我的界面功能
我的界面的是多个功能的汇总界面,主要包括运动历史界面、统计折线图界面、食物热量表界面、我的计划界面,如图9所示。运动历史界面为用户展示了已完成的运动计划、累计运动的天数、累计消耗的卡路里数等内容,用户通过当前界面实时了解自己的运动完成情况,如图10所示。统计折线图界面以图表的形式为用户记录从开始运动以来每天的步数变化,用户可以根据展示的图表记录规划每天的运动步数,如图11所示。食物热量表界面将服务器端传回的食物数据进行分类展示,用户可以根据自己想了解的食物热量[8],如图12所示。点击相应的分类查看具体热量信息,帮助自己在制定运动计划时选择合适的食物组合,如图13所示。我的计划界面用来管理用户在发现界面所添加的运动计划,用户可以根据当前的身体状态修改或删除已有计划,如图14所示。
4" 测试分析
4.1" 功能测试
测试APP的主要功能界面,包括用户注册与初始化界面、运动界面、运动计划添加、心率测试、运动管理、食物热量显示信息等,通过测试记录的信息与结果显示APP各功能界面均测试正常,用户能够便捷流畅的使用各项功能。
4.2" 安全测试
测试APP在使用过程中可能存在的安全漏洞和风险,以保证用户在使用APP时不会因为安全问题导致APP的错误退出,同时有效地保护了用户的信息与硬件设备调用时的安全性[9],测试结果显示,APP采取了合理的安全措施,使数据得到有效保护。
4.3" 兼容性测试
测试APP在不同型号、版本的手机上的兼容性。包括CPU架构、屏幕分辨率等方面[10]。测试结果显示,APP在不同型号、不同版本的设备上都能正常运行。
5" 结" 论
本文设计并实现了基于Android的运动管理系统APP,运用了客户端/服务器端的架构模式,用户在手机客户端操作的数据以及运动参数会传递到服务器端进行存储。用户不仅可以通过移动客户端实时监控自己的运动指标,还可以查看自己的历史运动数据,对比运动数据,改进运动方法,避免运动过载或身体不适。
参考文献:
[1] 崔洪成,陈庆果.移动健身App用户持续使用意愿研究 [J].首都体育学院学报,2020,32(1):75-81+96.
[2] 贾宁,李瑛达.基于智能可穿戴设备的个性化健康监管平台的构建 [J].计算机科学,2019,46(S1):566-570.
[3] 李超.家庭式医疗健康监护系统的研究与实现 [D].成都:电子科技大学,2020.
[4] 景子奇,邹兆年.嵌入式数据库SQLite上多版本并发控制的设计与实现 [J].计算机应用,2022,42(1):140-147.
[5] 王晓晨,付晓娇.健身、社交、情感:运动健身App网络社群的互动仪式链 [J].沈阳体育学院学报,2022,41(3):64-70.
[6] 谌涛,谢徽音.基于KANO模型的健身类APP用户满意度实证研究 [J].设计,2020,33(11):38-41.
[7] 崔洪成.移动健身App使用意愿研究——基于技术准备度与技术接受模型(TRAM) [J].中国体育科技,2022,58(6):104-113.
[8] 王翠萍.Android经典项目开发实战 [M].北京:清华大学出版社,2015.
[9]朱华健,谭海波,赵赫,等.基于Android的健康管理信息系统 [J].计算机系统应用,2015,24(9):61-65.
[10] 何红辉,关爱民.Android源码设计模式解析与实战:第2版 [M].北京:北京人民邮电出版社,2020.
作者简介:姚佳旭(1994—),女,汉族,山东德州人,工程师,本科,研究方向:软件开发、数据库应用。
基金项目:山东华宇工学院教学改革研究项目(2022JG03)