APP下载

智能药箱APP的实现

2023-01-31杜丹蕾韦美雁周翔勇

大众科技 2022年11期
关键词:药箱服药界面

文 昕 杜丹蕾 韦美雁 聂 力 周翔勇

智能药箱APP的实现

文 昕 杜丹蕾 韦美雁 聂 力 周翔勇

(湖南科技学院信息工程学院,湖南 永州 425199)

智能药箱APP是基于Android Studio开发平台设计出的一款药物管理和智能化服务相结合的APP,与家庭智能药箱配套使用。APP通过协调Activity和Fragment、Fragment和Fragment之间的通信,以及灵活运用Android四大组件与RecyclerView、ListView等重要控件,实现登录注册、基础功能、特色功能及个人信息四大模块,贯穿家庭成员安全用药的全过程,创新实现了用药提醒、药品管理、扫码入库、药品回收、紧急求助等特色功能,具有很强的实用价值。

Android;APP;智能家居

引言

随着社会压力的增大,人口老龄化形势日益严峻,社会健康水平难以提升。关于药品服用,一方面,大多数老人的子女无法陪伴其左右,老人忘记服药的情况时有发生;另一方面,儿童误食药品的事件频发[1]。基于此,设计一款安全、智能、功能健全、且对药物有足够保障的居家用药系统刻不容缓。

20世纪末以来世界范围内制造业服务化的深刻变革,基于产品与服务相结合的新型产业模式成为制造型企业新的利润和价值增长点[2]。在这样的时代背景下,以华为、小米等公司为代表的“智能家居”蓬勃发展。同时,我国移动终端的使用者数量处于爆发式增长,智能化的设备和各类APP应运而生,手机应用几乎已经融入到人们生活的方方面面[3]。

Android系统的用户基数庞大、开发市场广阔,同时其给予了开发者相当高的开发自由度[4-6]。Android应用软件开发语言是Java,大部分应用程序是用Java语言进行编写的,从接口到功能,从程序库到运行库,都有层出不穷的变化,大大提高了软件交互的可能性。MySQL数据库具有体积小、速度快、总体拥有成本低等特点,因此具有广泛的应用[7]。XML布局文件是Android系统中定义的Layout的常用方式,即能够在HTML文件之外将数据存储在XML文档中,使开发者集中精力使用HTML做好数据的显示和布局,并确保数据改动时不会导致HTML文件也需要改动,从而方便维护页面[8]。

因此基于Android平台,采用MySQL数据库,研发了一款智能药箱系统。系统分为软件和硬件两大部分,本文重点论述APP的研发。

1 系统方案设计

本系统的功能模块如图1所示。该系统的功能模块组成包括基础功能模块、主要功能模块以及特色功能模块。系统包含了一键开锁、扫码入库、温湿度监控、服药提醒、药品回收、紧急求救等一系列服务功能。

图1 系统功能模块设计

2 数据库表单设计

本系统采用MySQL数据库管理用户以及药箱的数据信息。在用户信息管理系统中使用到的主要数据表有用户信息表、药品信息表、关系表、管理员信息表,每个表分别储存不同的数据信息。

用户信息表:用户信息表中存储的是用户的基本个人信息,包含用户的账号、用户的姓名、用户的性别、用户的电话号码、用户的家庭地址等。用户信息表如表1所示。

表1 用户信息表

药品信息表:药品信息表主要存储药品的基本信息,包括药品编号、药品名称、药品的保质期、药品的适宜存储环境等。药品信息表如表2所示。

表2 药品信息表

服药提醒表:服药提醒表主要存储用户ID、药品ID、每天服药次数、第一次用药时间、用药间隔等基础用药信息。关系表如表3所示。

表3 服药提醒表

管理员信息表:管理员信息表中存储的是管理员的基础信息,包括管理员的ID、管理员的名称以及管理员的密码等。管理员表如表4所示。

表4 管理员信息表

3 系统实现与测试

基础功能模块主要实现的功能为用户可以通过APP进行常规的登录注册、找回密码、消息推送、个人信息查询与修改等操作。当用户以普通用户的身份进入到APP时,可进行登录操作,待账号密码匹配后方可进入主界面,从而进行后面的功能使用。

3.1 登录与注册

在登录点击事件中,系统需要判断使用者输入的账号或密码是否为空。若if判断语句“TextUtils.isEmpty(userId1) || TextUtils.isEmpty(userPwd1)”为真,那么登录界面将用调用Toast类的makeText方法在登录界面提醒用户“各项不能为空”;若判断语句为假,则调用get方法。

Toast类用于在屏幕中显示一个消息提示框,该消息提示框没有任何控制按钮,并且不会获得焦点,经过一段时间后自动消失,通常用于显示一些快速提示信息。

在get方法中,首先要获取OkHttpClient对象,然后构建Request对象,接着构建call对象,最后异步get请求。

OkHttpClient是OkHttp的客户端类,该类使用的是构建者模式,用来构建请求发起类Call、设置超时、设置缓存、设置拦截器等。

当用户多次未能输入正确的个人登录信息,为了用户的个人安全起见,用户必须要输入正确的验证码才可点击登录按键。其中,需要将字符串转换成Bitmap类型,其语法为:

byte[]bitmapArray = Base64.decode(string.split(","),Base64.DEFAULT);

bitmap = BitmapFactory.decodeByteArray(bitmapArray,0,bitmapArray.length);

系统的登录与注册样式如图2所示。

图2 登录与注册

3.2 主界面

主界面是连接登录界面与功能界面的“桥梁”。用户进入主界面后可以按照提示根据自身的需求选择APP所提供的各项服务。其中,主界面点击事件以“跳转界面”功能为主,该事件使用的是Intent类,首先获取Intent对象,然后确定需要进行跳转的两个相关界面,最后使用Activity类的startActivity方法,当事件的对应按钮被点击时,使用该方法启动进程。

Intent是一种运行时绑定(run-time binding)机制,它能在程序运行过程中连接两个不同的组件。通过Intent,你的程序可以向Android表达某种请求或者意愿,Android会根据意愿的内容选择适当的组件来完成请求。

Activity是一种展示型组件,向用户展示一个界面,并且可以接收用户的输入信息从而和用户进行交互,由Intent启动触发。当有多个Activity时,可以在代码中用Intent(意图)来启动,语法为:

Intent intent=new Intent(MyActivity.this,OtherActivity.class);

startActivity(intent);

系统的主界面样式如图3所示。

图3 主界面

3.3 智能开锁

家庭智能药箱设有智能开锁功能,避免家中的小孩子轻易地拿到药箱中的药物[9]。当用户点击主界面中药箱样式的图片时,将会生成开锁动画,与此同时药箱实体也会弹开药箱上盖,从而起到开锁的功能。该处使用MQTT(Message Queuing Telemetry Transport,消息队列遥测传输协议)技术用来连接硬件,是一种基于发布/订阅(publish/subscribe)模式的“轻量级”通信协议,该协议构建于TCP/IP协议上。其最大优点在于,可以以极少的代码和有限的带宽,为连接远程设备提供实时可靠的消息服务[10]。

3.4 温湿度监控

有的药物对保存的环境要求非常高,设置温湿度监控功能有利于实际检测目前药箱所处环境的温湿度情况,温湿度监控功能能够妥善地保管药物,避免暴晒、受潮,以免相关药物受到不良影响[11]。药箱实体会将自身所处的温湿度环境数据情况通过WiFi方式上传至后台服务器,前端获取到数据后会实时更新至APP主界面的顶部温湿度监测模块数据。其中,温度的获取需要调用Gson类中的fromJson方法,在成功获取到数据后,使用show方法,通过Activity类中的runOnUiThread方法,将获取到的温湿度消息展示在主界面之中;若数据获取失败,系统会通过Toast类的makeText方法提醒用户“温湿度数据获取服务异常”。

GSON是Google提供的用来在Java对象和Json数据之间进行映射的Java类库。可以将一个Json字符转成一个Java对象,或者将一个Java转化为Json字符串。

3.5 扫码入库

药品通过药箱的扫码口实现药品的识别与入库,入库后的药品信息将通过服务器传输至数据库,药品信息的相关数据被经过处理后渲染至用户的“当前药品”模块中。在该模块,用户可以在手机上随时随地查看智能药箱中还存有哪些药品,并判断家中需不需要对药品进行添置。

3.6 服药提醒

用户可根据医嘱在“服药计划”模块中上传各药品的第一次服药时间、每日服药次数以及每次服药剂量等用药信息,平台便会按照用户需求及时提醒家中患者开箱服药。当前药品模块如图4所示。

图4 药品登记模块

当用户在“服药计划”模块上传服药的相关信息后,该模块会根据这些信息生成服药计划。到达用户预先设定好的时间后,手机端与智能药箱会同时响起蜂鸣声,提醒用户按时用药,培养良好的用药习惯。

举例:若某用户设定的第一次服药时间为早上6时整,每日需服药3次,用药剂量为一次2粒,则该天第二次、第三次的服药时间分别为下午2时整与晚上10时整,每次服用2粒药。由此发挥最大药效。

计算公式:

24 H/每日服药次数T=每日服药间隔N

每日第一次用药时间T0+(T-1)*N=当日第N次服药时间

(当累加的每日用药时间>24 H,累加时间需进行重置)

举例说明:

每日服药间隔:24 H/3次=8 H/次

当日第二次服药时间:6 H+(2-1)次*8 H/次=14 H

同理,当日第三次服药时间:6 H+(3-1)次*8 H/次=22 H

另,第四次服药时间:6 H+(4-1)次*8 H/次=30 H

由于30 H>24 H,累加时间进行重置。

30 H-24 H=6 H,即6 H为新的一天第一次用药时间。

服药提醒模块如图5所示。

图5 服药提醒模块

3.7 药品回收

在“药品回收”模块,系统会在药品过期前向用户发送药品过期消息告知用户需要及时将过期药物进行妥善处理。过期药品信息会从“当前药品”模块中清除,并转移到“失效管理”模块中,用户可以通过该模块查看过期药品信息。

缓解过期药品对环境的污染,促进环保事业的发展[12]。平台为用户提供了药品回收功能,从而鼓励人们进行药品回收。用户通过该模块可以就近与当地部门的药品回收办进行联系,将已经过期的药品进行回收服务。药品回收模块如图6所示。

图6 药品回收模块

该功能模块上方使用了轮播图,以图片的形式向用户宣传药品回收对环境带来的好处,引起用户共鸣。轮播图采用的是Object类的instantiateItem方法,为了达到轮播的效果,采用取余与无限循环的方法,如下所示。

取余:

container.addView(list.get(position%list.size()));

return list.get(position%list.size());

解释说明:假设有3张照片,当放映到id=2的图片时,接下来将放映id=0的图片。

无限循环:

viewPager.setCurrentItem(viewPager.getCurrentItem() + 1);

sendEmptyMessageDelayed(1, 2000);

解释说明:每次都把所有相片,放到后面查看。

在“药品回收”模块的填写回收地址功能中使用了三级联动,三级联动可以简单地理解为两个二级联动,只有点击省才能出现下一级的市,只有点击市才能出现下一级的区。该功能使用了数据库和一种轻量级的数据交换格式JSON。JSON是独立于任何语言的文本格式。易于程序员阅读和编写,同时也易于计算机解析和生成。

为了完成省市联动和市区联动,要先获取到省市区三个的下拉列表。为了确保能够动态地获取到省份信息,首先要得到服务器返回的数据,然后将JSON字符串转换为JSON对象,最后更新并显示数据。

JSON是一种文本形式的数据交换格式,它比XML更轻量、比二进制容易阅读和编写,调式也更加方便;解析和生成的方式很多。

在“消息推送”模块中,系统会不定期向用户推送一些常规消息和温馨小贴士。添加一条推送消息的语法是:

MedicineSevice medicine = new MedicineSevice("这是条消息");

medicineServiceList.add(medicine);

当有新的消息需要被用户接收时,在主界面的“消息推送”按钮元件上会显示小红点,小红点要显示在元件上,当元件被点击后,小红点消失。判断小红点是否显示的方法是:

public void setBadgeEnable(boolean enable){

setVisibility(enable?VISIBLE:INVISIBLE);}

3.8 SOS一键求救

通过“SOS一键求救”模块,用户只需点击对应的事件按钮,平台就会立即发送紧急求助信息给用户所绑定的紧急联系人,避免用户因求助不及时而错过最佳的抢救时间[13]。

该模块的实现,首先需要准备一个URL类的对象,紧接着连接服务器,得到连接对象,然后获取加载数据的字节输入流is,将is装饰为能一次读取一行的字符输入流,加载一行数据并显示,最后释放资源。

4 性能测试

对系统进行性能测试,监测系统的可用性。主要测试系统在使用时对用户是否友好、操作难易程度、系统稳定程度等几大方面。本系统的具体测试方面如表5所示。

表5 系统可用性测试表

该系统充分利用了对射式光电传感器采集及传输、信息实时传递、关系型数据库、Java线程实现数据的异步请求功能、OkHttp获取数据、TCP/IP通信技术、分布式数据库相结合的优越性,共同攻克在智能医药箱系统、智能医药箱系统设计、客户端请求服务器流程、服务器架构、TCP/IP通信技术上的难题,使用户能够享受到家庭智能药箱所起到的实际性作用。

5 结束语

物联网技术下的网络经济及网络服务发展迅速,在医疗行业源远流长,本项目以发展创新医疗行业和造福人民群众两个目标为主旨,以期将家庭智能药箱遍布家家户户、人们信赖的新型医疗服务行业。该APP充分利用人机交互的优势,使用户能够及时地远程控制与管理家中的药品。同时,用户对药箱进行的一系列操作也能向手机进行实时反馈。用户端、硬件平台、后台服务器的交互,给健康用药提供了科学方案。

[1] 俞昊,杜丹蕾,韦美雁,等. 家庭智能管理药箱的设计与实现[J]. 计算机时代,2021(9): 63-65.

[2] 郑茂宽. 智能产品服务生态系统理论与方法研究[D]. 上海: 上海交通大学,2018.

[3] 李向辉. 基于Android的智慧社区App的设计与实现[J].技术与市场,2022,29(1): 50-51.

[4] 席润润,陶炎炎,张慧,等. 基于Android系统的智能药箱设计[J]. 中外企业家,2020(4): 155-156.

[5] 王曙光,张跃飞. 基于手机APP控制的家用智能药箱研究[J]. 浙江工贸职业技术学院学报,2018,18(2): 60-62.

[6] 黄蓉,陈健,李佳眙,等. “服药提醒”手机App软件交互设计[J]. 科学技术创新,2021(18): 35-36.

[7] 何志. 药品电子监管码相关系统在某院的应用实践[J]. 中国现代医生,2018,56(11): 140-143.

[8] 陈舒益. 嵌入式智能云药箱的设计[J]. 辽宁师专学报(自然科学版),2019,21(3): 76-80.

[9] 李晶,卢立新. 危险品的儿童安全包装[J]. 包装工程,2008(11): 193-195.

[10] 胡金通,杨淼,李诗鸥,等. 智能用药管家系统设计[J].淮海工学院学报(自然科学版),2019,28(4): 16-22.

[11] 沈信希,陈伟,庄梓升,等. 智能共享药箱发展现状分析研究[J]. 营销界,2019(39): 141-142.

[12] 姜玉琴,付晓娟,徐宏. 乡村居民过期药品多方治理回收模式的构建[J]. 中国医药导报,2022,19(17): 193-196.

[13] 张红燕,石晓慧. 基于Android的安心行程APP[J]. 电子制作,2021(18): 51-53.

Implementation of Smart Medicine Kit APP

The smart medicine kit APP is an APP designed based on the Android Studio development platform that combines drug management and intelligent services. It is used together with the home smart medicine kit. By coordinating the communication between Activity and Fragment, Fragment and Fragment, and flexibly using the four components of Android and important controls such as RecyclerView and ListView, APP realizes four modules, including login and registration, basic functions, featured functions and personal information. It runs through the whole process of safe medication for family members, and innovatively realizes the featured functions, such as medication reminder, drug management, code scanning and warehousing, drug recycling, and emergency help. It has strong practical value.

Android; APP; smart home

TP29; TN919

A

1008-1151(2022)11-0021-05

2022-04-29

湖南省大学生创新创业训练计划项目(湘教通〔2021〕197-3588);湖南省教育科学“十三五”规划2018 年度课题“基于教育大数据的湖南农村留守儿童学业预警研究”(XJK18BFZ002);湖南科技学院计算机应用特色学科项目;永州市科技创新指导性计划项目(2019-yzkj-09)。

文昕(2001-),女,湖南衡阳人,湖南科技学院信息工程学院学生,研究方向为软件工程。

杜丹蕾(1981-),女,湖南永州人,湖南科技学院信息工程学院讲师,硕士,研究方向为信息安全、区块链、智能信息处理。

猜你喜欢

药箱服药界面
中老年人服药切记4不要
警惕服药期间的饮食禁忌
翻翻动物的秘密药箱
国企党委前置研究的“四个界面”
服药坏习惯,您能占几条?
一种可用于潮湿界面碳纤维加固配套用底胶的研究
牛奶盒小药箱
服药先分阴阳
基于FANUC PICTURE的虚拟轴坐标显示界面开发方法研究
电子显微打开材料界面世界之门