1. 引言
随着人们健康意识的提高,给家用人体成分分析仪带来了良好的设计契机,而物联网和人工智能技术的冲击,让技术与设备能够更好地互联,使得智能健康测量产品顺势而起 [1]。在亚健康人群占比高居不下的今天,身体成分的管理仍然是一个热点话题。大多数人群通过多种途径以保证健康的状态,研究者也意识到相关产品对于用户的重要性,开始转向对健康管理类系统的研究,以便更好地掌握身体健康状态 [2]。基于这样的背景下,智能健康测量产品与移动端APP结合被广泛应用。将互联网、物联网、大数据技术等手段引入家用人体成分分析仪的APP设计开发中,更好地满足用户群体的需要。因此,借助成熟的技术手段,开发一款适合更多人群的APP,方便多种人群通过管理自己的身体成分来保持健康状态,解决现有系统以偏概全的问题,让系统更具针对性。
当前对于家用人体成分分析仪产品的普及率较低,相关系统的研究更是甚少,部分人群对于这一方面的知识非常欠缺。而在减少亚健康人群的过程中,普及人们对于身体成分管理的认知,保持健康的身体状态非常重要。因此,本文主要基于Android和IOS平台对家用人体成分分析仪APP进行设计开发,将蓝牙技术和GPS定位服务应用于APP的设计开发中,将软硬件设备互联,提升用户对APP的交互体验,为亚健康人群提供良好的健康指标,解决现有硬件设备的不足,更好地满足用户需求,从而提升用户体验。通过本系统的设计开发,不仅能满足更多人群的心理需求,更能提升人们的健康意识,从而有效预防疾病。
2. 现有系统分析
人体成分分析仪分析系统早已受到关注,起初是对人体成分分析仪硬件的实现进行研究 [3]。这类人体成分分析仪的体型比较庞大,大多只能单向获得测量身体成分的指标,数据显示复杂,非专业人员不易认知,且使用环境的局限较大,更多应用于医院和保健等公共场所。随着社会的转变和技术的更新,对人体成分分析的研究不断增多,除了单方面对硬件进行研究外,部分学者开始转向对软硬件的结合实现进行探索,并表明了应用于人体健康检测可行性 [4]。个别学者意识到系统设计的重要性,基于Android系统对人体成分分析仪展开研究,提高了检测数据的准确性 [5]。但纵观国内外研究成果对比其他产品来说,对于此方向的研究仍处于起步阶段。无论是硬件的研究,还是软硬结合的探索,都在考虑其测量精度。以功能技术层面来进行研究的居多,未能很好的单纯从移动端的交互行为进行深入研究,缺乏良好的人机交互体验。因此,专门针对此类产品系统的交互研究变得十分重要。
3. 系统需求分析
3.1. 功能性需求分析
功能需求作为软件开发的主体,主要是探究软件要实现的功能 [6]。在软件开发的准备阶段,需对用户需要实现的功能及期望进行了解,从而确定软件开发要达到的目的,并完成具体的用户需求。通过对家用人体成分分析仪的长期使用者进行沟通交流,从而确定了家用人体成分分析仪APP需要实现的功能。
1) 测量提醒功能:设定时间,定期监测自己的身体成分变化,及时了解身体健康状况。
2) 数据记录与分析功能:记录每一次测量的数据,根据测量指标的数据进行分析,全面了解自身的身体状况。
3) 健康指导:通过测量指标的分析,针对性的给出指导意见,保持健康的身体。
4) 显示模式切换:针对使用人群的迥异属性,提供不同的显示模式,方便更多的用户群体。
5) 移动端APP操作控制互联的硬件设备:绑定手机,可随时查找设备和帮助调控设备。
3.2. 非功能性需求分析
非功能需求作为功能需求的补充,是除功能需求以外的特性,在软件的开发过程中不仅要实现功能需求,还要注重对非功能需求的满足,才能更好地提升用户体验 [7]。在本系统的开发中,非功能需求可从三个方面来进行:
1) 界面的可操作性:软件的功能模块设计清晰,可提升用户的交互体验,但其基本操作又需要考虑用户常用软件的习惯性。
2) 界面显示的美观性:界面元素的设计和配色的选择,能够有效的提升用户满意度。本软件在界面设计中采用了互联设备的元素,配色选择和设备契合的颜色,增强软件界面的视觉感受。
3) 安全可靠性:个人的指标数据作为对自己健康状态的掌握途径,而技术的进步,导致很多人开始窃取别人的隐私,导致用户非常反感,因此,在进行APP系统开发时,需要保证移动端的安全性,避免各种问题的出现。
4. 系统设计与实现
4.1. 系统架构设计
家用人体成分分析仪APP主要从交互层、服务层、数据层来进行设计开发。
4.1.1. 交互层
交互层主要涉及软件的前端设计部分。前端主要部署在两大主流移动平台(Android, iOS)上,软件的整体设计模式采用了抽象工厂模式。Andriod端开发平台采用了Google的官方开发平台Android Studio进行开发,大量的使用了Java语言,XML语言以及JSON来进行软件具体逻辑以及相关算法的实现。iOS端开发平台主要采用了macOS下的XCode开发套件来进行开发,使用了Apple官方的swift语言来进行开发以及逻辑算法的实现,以及使用了大量的UIkit来进行前端UI的动画处理。
1) 蓝牙模块的实现
系统的交互主要采用了蓝牙来进行设备的软硬件互联。当前,蓝牙技术已经比较成熟,作为是一种无线技术标准,可以实现固定设备的无线连接,从而实现各个设备之间的短距离数据传输功能 [8]。具体实现的功能有:1、扫描其他蓝牙设备;2、为可配对的蓝牙设备查询可适配的蓝牙装置;3、建立RFCOMM通道;4、与其他设备进行数据传输。而Android平台提供蓝牙支持,允许Android设备与其他设备进行无线数据传输。因此,在软件层主要使用了Android Studio支持的android.bluetooth.BluetoothDevice和android.bluetooth.BluetoothAdapter这两个JAVA库。在硬件上采用了类似于HC05的低功耗蓝牙模块,负责在硬件上实现传感器数据与软件之间的数据传输。
下面是在Android studio中这两个JAVA库的使用方法:
//在Android Studio 开启系统的蓝牙功能
import android.bluetooth.BluetoothAdapter;
import android.bluetooth.BluetoothDevice;
BluetoothAdapter HuanBlueTooth = BluetoothAdapter.getDefaultAdapter();
if(!HuanBLueTooth.isEnabled()) //判断设备蓝牙是否开启
{
//如果没有开启就调用startActivityForResult()方法来提示用户没有打开蓝牙
Intent enableBluetooth = new lntent(HuanBlueTooth.ACTION_REQUEST_ENABLE);
startActivityForResult(enableBlueooth,REQUEST_ENABLE_BT);
}
在手机上打开蓝牙来搜索设备
Set
HuanBoothDevices = HuanBlueTooth.getBondedDevices();
//用一个Set
集合来保存设备扫描的蓝牙设备
if(pariedDeveces.size > 0){
for(BlueToothDevice dev:HuanBOothDevices){
String HuanDeviceName = dev.getName(); // 得到蓝牙设备的名字
String HuanDeviceMacAddress =dev.getAddress(); //得到蓝牙设备唯一的Mac地址
}
}
当搜索到蓝牙设备的名字和Mac地址后就可以进行连接
BlueToothDevice HuanDev = HuanBlueTooth.getRemoteDevice(macAddress);
UUID uuidForBlueToothDevice = UUID.fromString(bluetoothDeviceCode);
try{
hSocket = device.createRfcommScoetToServiceRecord(uuid); //进行连接 如果出错就用catch来捕获
}catch(IOException e){
E.printStackTrace();
}
2) GPS定位服务模块的实现
全球定位系统(Global Positioning System, GPS)是一种以人造地球卫星为基础的高精度无线电导航的定位系统,能够提供准确的地理位置 [9]。在家用人体成分分析仪的软硬件数据信息交互中,需要使用到GPS的定位信息来实现一键查找设备功能。
GPS的实现也分软件上和硬件上。在软件上主要使用了LatLng这个java库,通过里面封装好的API代码来实现具体需要的GPS功能。在硬件上主要使用了类似于1575R-A模块来实现具体的NMEA信息获取。硬件上获取的信息再通过服务器传递到软件端上,在软件端上实现NMEA数据类型的处理函数,将信息处理成为对用户友好的可视化信息。
下面是在android studio中LatLng库的使用方法:
import com.amap.api.maps.odel.LatLng;//导入库
@Override
public void onLocationChanged(AMapLocation amapLocation){
boolean LocationSwitchOne = ((amapLocation != null) && (mListener != null));
boolean LocationSwitchTwo = ((amapLocation != null) && (amapLocation.getErrorCode() == 0));
if(LocationSwitchOne){
if(LocationSwitchTwo){
if(isFirstTime) //如果是第一次定位
{
mListner.onLocationChanged(amapLocation); //显示系统定位图标
lvHolder.title = “位置:”;
lvHolder.address= amapLocation.getProvider()+amapLocation.getCity()+amapLocation.getStreet()+amap Location.getStreetNum();
//上面的amapLocation.get*()可以得到当前位置的GPS信息,返回的数据格式是String格式,这样就可以得到当前的GPS信息,并且保存到了lvHolder.address中
}
}
else {
String errText = “定位不成功”+amapLocation.getErrorCode()+”: ”+amapLocation.getErrorInfo();
Log.e(“Debug: ”+errText);
}
}
}
3) 软件交互层
包括注册登录,最新的数据显示及健康指导、测量提醒、测量数据记录与分析、设备查找和显示模式切换功能。其中最新数据显示及健康指导、测量提醒、测量数据记录与分析和设备查找的交互模式以可视化方式呈现。
①最新数据显示及健康指导主要展示最近一次测量结果,根据数据结果分析,提供针对性的健康指导,起到警示作用。
②测量提醒主要是用于提醒家人或自己定期检测自己的身体状况。
③数据记录与分析提供多个用户的使用情况记录,以随时掌控自己的健康状况。
④设备查找主要是采用GPS定位服务,为了方便用户寻找设备,及时发现设备状态,以便更好地使用。
4.1.2. 服务层
服务层主要部署在CentOS7系统上面,采用了Node.js来进行后端的部署,以及异步的方法来应对同时需要处理多个用户请求的情况,在Node.js上也采用了express,http等模块。
服务端的node.js关键代码如图1:

Figure 1. Partial realization of node.js-socket
图1. node.js-socket部分实现
软件端的java关键代码如图2:

Figure 2. Partial realization of java-socket
图2. java-socket部分实现
4.1.3. 数据层
数据层主要采用了MySql来进行数据存储。MySql的服务端口设置在了3000端口,与Node.js后端服务器来进行数据的交互,并且将数据实时的呈现在前端(client)上面。
User用户表:包括用户的唯一登录信息ID,USER_NAME使用VARCHAR(32)的类型来保存且不为空,USER_PASSWORD使用VARCHAR(32)来保存,CHARSET属性主要使用utf-8编码。
INFO数据表:可以与User进行多表链接来进行查询。INFO__BMI使用FLOAT数据类型,保存了BMI的数据;INFO__WATER使用FLOAT数据类型,保存了用户的水分数据信息;INFO_BODY_FAT使用DOUBLE数据类型,保存用户的体脂数据信息;INFO_BONE使用INT数据类型,保存了用户的骨量数据信息;INFO__WEIGHTS使用FLOAT数据类型,保存了用户的体重信息;INFO__MUSCLE_RATE使用DOUBLE数据类型,保存了用户的肌肉率信息,其他一些指标数据也是通过这样的方式保存至数据库。
4.2. APP的设计实现
APP的功能设计梳理为用户个人中心、测量提醒、数据记录与分析、最新数据显示及健康指导、查找设备。将四个功能整合到APP的四个页面中,分别为系统首页、数据记录和分析页以及“我”页,软件逻辑框架如图3所示。
系统首页界面如图4所示。为了更好地使用户管理自己的身体成分来保持健康的生活,本软件的主界面设置了最新数据显示和健康指导。在首页的界面设计中,将首页顶部选择作为当前最新的数据显示,以便实时掌握测量状态。常用参考数据直接显示,其他更多数据滑动显示。首页下端显示健康指导与推荐,主要是根据测量的数据结果分析,提供针对性的健康指导。当用户查询完最新的测量数据信息后,点击上方的提醒按钮可进入测量提醒界面,在测量提醒界面添加提醒人,根据不同用户的使用频率设定提醒时间,可设置多个提醒人。在工作压力较大的环境下,人们通常会忘记做一些想做的事,温馨的提醒可以带给用户温暖。

Figure 4. System home page and expanded page
图4. 系统首页及展开页
对于测量数据记录与分析界面如图5所示,用户的每一次测量将记录在APP端,可提供多个用户的详细记录,针对个人数据进行分析,分析结果以下滑动读取,以便随时对比不同时期的数据,及时改善健康状态。

Figure 5. Data recording and analysis page
图5. 数据记录与分析页面
“我的”页面层级下添加GPS定位服务,用于发现设备。通过点击我的设备,进入发现设备页面,可开启一键找设备,设备会以多种方式给出反馈,从而成功地将设备与移动端互联。该界面还提供了三种不同的显示模式,用户可以根据自己的习惯进行选择,具体页面如图6所示。
该移动端的主要功能在于,当用户需要测量身体成分时,只需要通过GPS定位功能,可开启一键找设备,APP端即可查寻互联设备的状态,当使用完设备后,可从该端获取详细的数据信息分析,并给出相应的健康指导。并且根据不同年龄段的人群,设计不同的数据显示模式,操作简便,适合不同年龄段的人群,还可通过APP端操作来控制互联设备。
4.3. 本系统优势
基于前人研究的基础上,本系统集成了GPS定位技术和蓝牙技术,不仅实现了传统家用人体成分分析仪测量数据分析功能。同时将数据的读取从产品转移到软件上,避免了产品本身功能复杂,导致体型的庞大,还能更好地随时查看自己的身体指标数据。由于使用该设备的人群范围广泛,为了更好地满足不同年龄段的用户,提供了多种显示模式,主要根据年龄段区分,显示重点有所不同,用户可切换自己合适的显示模式,以提升用户体验。更重要的是,本系统使用物联网技术,将系统与设备互联,实现测量数据的可视化,用户可直接在APP端查看自己的身体成分指标,并将每一次数据进行记录和分析,以便更好地掌握自己的身体状况,不再是必须靠近设备才可以查看自己的数据,且数据内容还比较单一。同时,还使用了GPS定位服务,用户可在需要使用设备时,开启一键找设备,设备便会给出反馈信息,避免浪费时间。
5. 结语
本系统基于Android和IOS两大主流移动平台对家用人体成分分析仪APP进行设计开发。利用蓝牙技术使移动端与设备互联,基于GPS定位技术有效获取设备的状况信息。以MySQL数据库进行数据储存,将数据实时的呈现在前端,使详细的数据可视化显示,提升数据信息的可读性;界面的设计简洁美观,减少操作的复杂性。该系统的开发主要对系统的人机交互体验进行考量,使得APP的实现具有很好的实用性,且交互性强。同时APP与设备软硬件的结合,更能满足用户需求,通过移动端APP的优势弥补硬件设备的不足,从而达到更好地用户体验效果。