高俊男 胡樹(shù)煜
[摘? ? 要] 本文通過(guò)對(duì)公眾服務(wù)平臺(tái)的APP應(yīng)用程序分析,設(shè)計(jì)了A/S系統(tǒng)架構(gòu)模式、數(shù)據(jù)庫(kù)和Android環(huán)境架設(shè)方式,用Activity實(shí)現(xiàn)頁(yè)面操作、用Intent傳遞信息、用Vibrator實(shí)現(xiàn)用藥提醒、用SensorManager實(shí)現(xiàn)血壓和心率測(cè)量,完成了APP主體功能的構(gòu)建,對(duì)其他APP程序開(kāi)發(fā)起到了導(dǎo)引作用,具有較高的推廣價(jià)值。
[關(guān)鍵詞] Android;公眾;服務(wù);APP;開(kāi)發(fā)
doi : 10 . 3969 / j . issn . 1673 - 0194 . 2021. 01. 048
[中圖分類號(hào)] TP315? ? [文獻(xiàn)標(biāo)識(shí)碼]? A? ? ? [文章編號(hào)]? 1673 - 0194(2021)01- 0119- 03
0? ? ? 引? ? 言
5G時(shí)代的到來(lái),使移動(dòng)互聯(lián)網(wǎng)高速發(fā)展,智能終端的使用,更成為人們生活中必不可少的一部分。APP(Application)是指安裝在智能終端上的應(yīng)用軟件,使智能終端功能全面化,使用方便化,成為人們處理數(shù)據(jù)信息業(yè)務(wù)的主要途徑之一。
公眾服務(wù)平臺(tái)是根據(jù)特定用戶的共同需求,在一定時(shí)期內(nèi),進(jìn)行組織、整合、集成、優(yōu)化各類軟硬件資源,提供可共享的設(shè)施、設(shè)備、服務(wù)等共享資源的環(huán)境,達(dá)到用戶需求目的的一種特定的解決方案。公眾服務(wù)平臺(tái)具有基礎(chǔ)性、開(kāi)放性和公益性特征。老年慢性病社區(qū)護(hù)理服務(wù)平臺(tái)是一種公益性的公眾服務(wù)平臺(tái),使用APP為老年慢性病患者提供社區(qū)護(hù)理服務(wù),更能快速高效的達(dá)到服務(wù)目的和標(biāo)準(zhǔn),具有重要的現(xiàn)實(shí)意義,下面以此平臺(tái)為例進(jìn)行描述公眾服務(wù)類APP的開(kāi)發(fā)過(guò)程。
1? ? ? 系統(tǒng)需求分析
老年人由于生理功能減退、抵抗力下降、各項(xiàng)健康指標(biāo)不達(dá)標(biāo),容易患上久治不愈的慢性病,老年人的健康水平受到社會(huì)各界的普遍關(guān)注。慢性病的問(wèn)題是眾多老年人生活中的最大阻礙,對(duì)于老年人的慢性病的護(hù)理是當(dāng)前護(hù)理研究中最重要的組成部分。基于Android的老年慢性病管理服務(wù)APP,不僅可以快捷方便的為老年人提供經(jīng)濟(jì)實(shí)惠的高品質(zhì)服務(wù),更是提高生活質(zhì)量,促進(jìn)社會(huì)和諧發(fā)展的有效途徑,在老年人品質(zhì)生活中具有大量的需求,在現(xiàn)實(shí)生活中具有重要的積極的意義。
2? ? ? 系統(tǒng)設(shè)計(jì)
2.1? ?系統(tǒng)架構(gòu)
采用A/S(APP/Server,APP應(yīng)用/服務(wù)器)模式是基于C/S(Client/Server,客戶端/服務(wù)器)模式的擴(kuò)展模式,是APP應(yīng)用程序作為客戶端與服務(wù)器進(jìn)行數(shù)據(jù)交換的一種模式,如圖1所示,服務(wù)器上配置資源,搭載Android運(yùn)行環(huán)境,開(kāi)發(fā)的老年慢性病管理服務(wù)公眾平臺(tái)基于服務(wù)器運(yùn)行,平臺(tái)的所有數(shù)據(jù)通過(guò)服務(wù)器和數(shù)據(jù)管道與數(shù)據(jù)庫(kù)進(jìn)行交互,進(jìn)行存儲(chǔ)、查詢、修改等數(shù)據(jù)操作,在公眾服務(wù)平臺(tái)上嵌入智能APP應(yīng)用,用戶通過(guò)智能手機(jī)、平板等終端設(shè)備下載、安裝、應(yīng)用APP上的服務(wù)和功能。
2.2? ?數(shù)據(jù)庫(kù)
MySQL是一種關(guān)系數(shù)據(jù)庫(kù)管理系統(tǒng),從上市以來(lái)它的開(kāi)源性、多線程、多用戶、良好的圖形界面等特性,一直受到廣大用戶的歡迎,使SQL結(jié)構(gòu)化查詢語(yǔ)言操作更加方便、快捷。
我們使用Windows系統(tǒng),安裝MySQL 8.0版本,另外還需要安裝它的圖形化用戶界面工具:數(shù)據(jù)庫(kù)管理MySQL Administrator、數(shù)據(jù)查詢MySQL Query Browser、數(shù)據(jù)遷移MySQL Migration Toolkit。
MySQL使用前需要進(jìn)行配置,進(jìn)行系統(tǒng)配置時(shí),選擇默認(rèn)參數(shù)即可,操作簡(jiǎn)單,后期如果需要調(diào)整參數(shù)時(shí),可以使用MySQL Server Instance Config Wizard工具進(jìn)行修改即可。
安裝和配置好MySQL后,它會(huì)以Windows服務(wù)的形式存在,在服務(wù)管理器中對(duì)MySQL進(jìn)行啟動(dòng)應(yīng)用即可。
2.3? ?Android環(huán)境架設(shè)
Android是基于Linux開(kāi)放性內(nèi)核的手機(jī)操作系統(tǒng),最初是由Android公司開(kāi)發(fā),2005年被谷歌收購(gòu)。Android平臺(tái)的開(kāi)放性,自其上市以來(lái)就受到客戶群體的歡迎,其中在2011年的時(shí)候就在市場(chǎng)占有率中占有絕對(duì)優(yōu)勢(shì),擊敗諾基亞的“塞班”系統(tǒng)成為領(lǐng)頭羊。目前,Android已經(jīng)成為主流手機(jī)操作系統(tǒng),并占有持續(xù)性優(yōu)勢(shì)。在系統(tǒng)的使用中,目前已經(jīng)走向了各種智能領(lǐng)域,包括了智能手機(jī)、智能電視以及平板電腦等。
Android Studio是個(gè)新的開(kāi)發(fā)環(huán)境,與早期開(kāi)發(fā)App使用Eclipse相比,擁有更強(qiáng)大的功能和更高效的性能。本次開(kāi)發(fā)使用Android Studio 9.0版本,在安裝前需要安裝JDK(Java Development Kit),JDK是Java的編譯器,因?yàn)锳ndroid應(yīng)用是使用Java語(yǔ)言開(kāi)發(fā)編寫的,所以先要安裝JDK作為編譯器。另外還需要安裝NDK(Native Development Kit),NDK是C/C++代碼的編譯器,主要用于接口使用。
Android Studio安裝后,還需要下載安裝軟件開(kāi)發(fā)工具包SDK(Software Development Kit),便于后續(xù)開(kāi)發(fā)工作。
安裝完成后,可以使用USB接口連接真實(shí)手機(jī)的方式、Android SDK提供的Android Virtual Device(AVD)虛擬手機(jī)方式、安裝第三方模擬器(如Genymotion模擬器)方式來(lái)運(yùn)行環(huán)境。
3? ? ? 功能實(shí)現(xiàn)
3.1? ?用Activity實(shí)現(xiàn)頁(yè)面操作
在頁(yè)面設(shè)計(jì)中,根據(jù)視覺(jué)注意力聚焦點(diǎn),把重要內(nèi)容放在人們集中關(guān)注的左中上部。一個(gè)Activity代表一個(gè)頁(yè)面,我們可以通過(guò)調(diào)用Activity的onCreate方法可以建立函數(shù)的入口來(lái)實(shí)現(xiàn)頁(yè)面操作過(guò)程, AMS是通過(guò)ActivitvStack和其他數(shù)據(jù)結(jié)構(gòu),來(lái)記錄、管理、查詢Activity的一個(gè)系統(tǒng)服務(wù),主要是以創(chuàng)建頁(yè)面(onCreate)、開(kāi)始頁(yè)面(onStart)、恢復(fù)頁(yè)面(onResume)、暫停頁(yè)面(onPause)、停止頁(yè)面(onStop)、銷毀頁(yè)面(onDestroy)、重啟頁(yè)面(onRestart)幾個(gè)操作為中心進(jìn)行,例如,從ActAActivity頁(yè)面跳轉(zhuǎn)到ActBActivity頁(yè)面的順序是:
A頁(yè)面onPause→B頁(yè)面onCreate→onStart→onResume→A頁(yè)面onStop
代碼實(shí)現(xiàn)如下:
@Override
protected void onStop() {? //停止活動(dòng)頁(yè)面
refreshLife("onStop");
super.onStop();
}
@Override
protected void onCreate(Bundle savedInstanceState){? //創(chuàng)建活勸頁(yè)面
super.onCreate(savedlnstanceState);
setContentView(R.layout.activiry_ act_jump);
findViewById(R.id.btn_act_ next).setOnClickListener(this);
tv_ life=findViewById(R.id.tv_ life);
refreshLife("onCreate");
}
……
另外,也可以通過(guò)調(diào)用Activity的startActivity方法實(shí)現(xiàn)頁(yè)面跳轉(zhuǎn)。
3.2? ?用Intent傳遞信息
Intent主要用來(lái)傳遞信息,可以Android的各組件Activity、Service、Broadcast之間進(jìn)行通信。Intent采用顯式和隱式方式來(lái)表達(dá)路徑方式。顯式Intent屬于精確匹配,直接指定來(lái)源類與目標(biāo)類名,清晰明確,一般通過(guò)構(gòu)造函數(shù)、setClass方法、setComponent方法來(lái)指定,代碼如下:
Intent intent=new Intent();//創(chuàng)建一個(gè)新意圖
ComponzntName component=new ComponentName(this, ActResponseActivity.class);
intent.setComnonent(comnonent);//設(shè)置意圖攜帶的組件信息
隱式Intent屬于模糊匹配,并不給出明確指定要跳轉(zhuǎn)的類名,只給出一個(gè)動(dòng)作讓系統(tǒng)匹配擁有相同字串的目標(biāo),這個(gè)動(dòng)作一般通過(guò)setAction方法、構(gòu)造函數(shù)Intent(String action)指定,APP中調(diào)用系統(tǒng)撥號(hào)程序代碼如下設(shè)計(jì):
Intent intent = new Intent();//創(chuàng)建一個(gè)新意圖
intent.setAction(Intent.ACTTON_CALL);//設(shè)置直接撥號(hào)為意圖動(dòng)作
Uri uri=Uri.parse("tel:" + phone);//聲明撥號(hào)的Uri
intent. setData(uri);//設(shè)置意圖前往的路徑
startActivity(intent);//啟動(dòng)意圖通往的話動(dòng)頁(yè)面
3.3? ?用Vibrator實(shí)現(xiàn)用藥提醒
老年人用藥可以利用手機(jī)震動(dòng)功能提醒,在Android的VIBRATOR_SERVICE服務(wù)中有一個(gè)震動(dòng)器Vibrator,可以完成我們所需要的功能,在AndroidManifest.xml 中加上權(quán)限,否則無(wú)法使用震動(dòng)器,代碼如下:
<!--震動(dòng)-->
控制手機(jī)震動(dòng)的代碼如下:
Vibrator vibrator= (Vibrator) getSystemServicer(Context. VIBRATOR_SERVICE);//從系統(tǒng)服務(wù)中獲取震動(dòng)器
vibrator.vibrate(10000);//設(shè)置震動(dòng)器震動(dòng)10秒
3.4? ?用SensorManager實(shí)現(xiàn)血壓和心率測(cè)量
Android系統(tǒng)提供了傳感器功能,使用SensorManager控件進(jìn)行注冊(cè)后使用,測(cè)量血壓可以使用壓力傳感器,代碼設(shè)計(jì)如下:
public class MainActivity extends Activity implements SensorEventListener
{
private TextView etPressure;//定義壓力管理器
@Override
protected void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
setContentView(R.layout.activity main);//獲取界面上的TextView組件
etPressure=findViewById(R.id.etPressure);
mSensorManager=(SensorManager)
getSystemService(Context.SENSOR SERVICE);//獲取傳感器管理服務(wù)
}
@Override
public void onResume()
{
mSensorManager .registerListener(this,
mSensorManager.getDefaultSensor(Sensor.TYPE_PRESSURE),
SensorManager .SENSOR DELAY GAME);
}
@Override
public void onAccuracyChanged(Sensor sensor, int accuracy)
@Override
public void onSensorChanged(SensorEvent event)
{
s=new? StringBuilder();
s.append (“當(dāng)前血壓為:”);
s.append (values[0]);
etPressure·setText(s.toString());
break;
……
心率判斷可以通過(guò)android.permission.BODY SENSORS獲得權(quán)限,通過(guò)SensorEvent的accuracy屬性判斷是否準(zhǔn)確,如果該屬性值為SENSOR_ STATUS_ UNRELIABLE或SENSOR STATUS NO CONTACT,則表明傳感器返回的心率值是不太可靠的,應(yīng)該丟棄。
4? ? ? 結(jié)? ? 語(yǔ)
隨著智能手機(jī)的不斷革新,APP現(xiàn)在已經(jīng)成為附帶的主流應(yīng)用工具,老年慢性病社區(qū)護(hù)理服務(wù)平臺(tái)的開(kāi)發(fā)是公眾服務(wù)平臺(tái)開(kāi)發(fā)中最典型的應(yīng)用,具有一定的代表性,在后期的實(shí)踐應(yīng)用中會(huì)不斷完善其功能。Android系統(tǒng)開(kāi)發(fā)具有開(kāi)放性、普遍性,通過(guò)本文的架構(gòu),希望帶給大家更多的創(chuàng)作靈感,開(kāi)發(fā)出更高效、實(shí)用的APP程序。
主要參考文獻(xiàn)
[1]趙娟.基于Android的人臉識(shí)別系統(tǒng)開(kāi)發(fā)[J].中國(guó)管理信息化,2020(11):184-186.
[2]傅天泓.基于Android的掌上醫(yī)院APP的設(shè)計(jì)與實(shí)現(xiàn)[J].安徽電子信息職業(yè)技術(shù)學(xué)院學(xué)報(bào),2019(6):1-5.
[3]韓旭.基于Android的出行助手App的設(shè)計(jì)與實(shí)現(xiàn)[J].電子世界,2018(24):194,196.
[4]潘慶紅,黎明,寧金偉.基于Android的“家校通”APP設(shè)計(jì)與實(shí)現(xiàn)[J].湖南科技學(xué)院學(xué)報(bào),2018(10):85-88.