国产日韩欧美一区二区三区三州_亚洲少妇熟女av_久久久久亚洲av国产精品_波多野结衣网站一区二区_亚洲欧美色片在线91_国产亚洲精品精品国产优播av_日本一区二区三区波多野结衣 _久久国产av不卡

?

基于Android平臺傳感器技術(shù)的運(yùn)動監(jiān)測應(yīng)用

2017-03-24 06:07:21劉小安彭濤賈杉杉
電腦知識與技術(shù) 2017年1期
關(guān)鍵詞:傳感器技術(shù)

劉小安+彭濤+賈杉杉

摘要:隨著Android手機(jī)的普及和研究者對其在日常生活中功能的拓展挖掘,Android手機(jī)的功能已經(jīng)不再是單純用于通話,而漸漸滲透到人們?nèi)粘I畹母鱾€方面。該文以運(yùn)動監(jiān)測作為切入點(diǎn),利用Android平臺提供的傳感器接口,設(shè)計了一款基于Android平臺傳感器技術(shù)的運(yùn)動監(jiān)測應(yīng)用,從而實(shí)現(xiàn)計步,俯臥撐計數(shù)等運(yùn)動數(shù)據(jù)記錄功能。

關(guān)鍵詞:Android;傳感器技術(shù);運(yùn)動監(jiān)測

中圖分類號:TP311 文獻(xiàn)標(biāo)識碼:A 文章編號:1009-3044(2017)01-0063-04

1 背景

隨著基于Android平臺的手機(jī)的普及和研究者對其在日常生活中功能的拓展挖掘,以及基于Android平臺的手機(jī)所配備的硬件(如:光線傳感器、壓力傳感器)日益豐富,Android手機(jī)的功能已經(jīng)不再是單純用于通話,而漸漸滲透到人們?nèi)粘I畹母鱾€方面,例如:家居控制、運(yùn)動監(jiān)測。在運(yùn)動監(jiān)測功能中,需要充分利用Android平臺給開發(fā)者提供的接口以及手機(jī)本身所配備的豐富的硬件,獲取用戶的運(yùn)動基礎(chǔ)數(shù)據(jù),并通過相關(guān)算法進(jìn)行加工和處理,從而實(shí)現(xiàn)通過手機(jī)對用戶運(yùn)動進(jìn)行監(jiān)測和數(shù)據(jù)記錄。

本文將簡要介紹Android平臺為開發(fā)者所提供的傳感器接口以及簡單的調(diào)用方法,并在此基礎(chǔ)上設(shè)計一款運(yùn)動監(jiān)測應(yīng)用,實(shí)現(xiàn)對用戶計步、俯臥撐計數(shù)等運(yùn)動記錄功能。

2 Android平臺傳感器

在Android2.3 gingerbread系統(tǒng)中,Google公司提供了11種傳感器供應(yīng)用層使用。分別是:

#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 //光線感應(yīng)傳感器

#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//旋轉(zhuǎn)矢量傳感器

2.1 傳感器分類

以上11種傳感器可分為3類:

1)位移傳感器,這些傳感器測量沿三個軸線測量加速度和旋轉(zhuǎn)。(包含加速度、線性加速度、重力、陀螺儀和旋轉(zhuǎn)矢量傳感器)

2)環(huán)境傳感器 ,這些傳感器測量各種環(huán)境參數(shù),例如周圍的空氣溫度和壓力,光線,和濕度。(包含壓力,光線和溫度傳感器)

3)位置傳感器,這些傳感器測量設(shè)備的物理位置。(包含距離、方向和磁力傳感器)

2.2 傳感器使用

以上11種傳感器使用方法類似,本文僅以加速度傳感器為例。

1)Android所有的傳感器都?xì)w傳感器管理器 SensorManager 管理,首先獲取傳感器管理器

SensorManager SensorManager = (SensorManager)getSystemService(Context,SENSOR_SERVICE);

2)從傳感器管理器中獲取需要的傳感器

Sensor Speed = SensorManager.getDefaultSensor(Sensor.TYPE_ACCELEROMETER);

3)實(shí)現(xiàn)傳感器監(jiān)聽方法

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)注銷傳感器監(jiān)聽

SensorManager.unregisterListener(speedListener);

3 運(yùn)動監(jiān)測應(yīng)用設(shè)計

應(yīng)用的整體架構(gòu)如圖1所示:

3.1 客戶端

采用Fragment+Viewpager作為基本UI框架,通過異步任務(wù)和多線程技術(shù)來實(shí)現(xiàn)訪問服務(wù)器;通過Handler、BroadcastReceiver動態(tài)更新UI;通過Content Provider來實(shí)現(xiàn)不同Activity以及線程中數(shù)據(jù)的共享;通過Service來定時更新用戶的位置信息。在運(yùn)動監(jiān)測的過程中,根據(jù)不同運(yùn)動的特點(diǎn),運(yùn)用不同的傳感器接口來實(shí)現(xiàn)運(yùn)動監(jiān)測。

3.2 服務(wù)端

采用Servlet+MySQL的基本框架,使用阿里云服務(wù)器作為應(yīng)用的服務(wù)器,來實(shí)現(xiàn)與客戶端的交互、數(shù)據(jù)訪問以及操作處理。數(shù)據(jù)存儲采用MySQL開源數(shù)據(jù)庫,通過JDBC來實(shí)現(xiàn)Servlet與MySQL數(shù)據(jù)庫之間的數(shù)據(jù)傳輸。

服務(wù)端和客戶端的數(shù)據(jù)交互通過JSON來進(jìn)行封裝,從而便于解析處理。

3.3 運(yùn)動檢測算法設(shè)計

1)計步監(jiān)測

考慮到用戶在運(yùn)動過程中運(yùn)動速度相對規(guī)律,本文采用加速度傳感器來實(shí)現(xiàn)計步功能。首先通過Android加速度傳感器接口獲取到運(yùn)動過程中所產(chǎn)生的基礎(chǔ)數(shù)據(jù);然后對基礎(chǔ)數(shù)據(jù)進(jìn)行其可視化,繪制x-y-z加速度與時間的圖像,如圖2、圖3所示:

由于篇幅限制,上兩張圖展示的是運(yùn)動過程中較為典型的兩張圖像,其中圖2和圖3的最大差別在于圖2中X軸的曲線特征較為清晰的表現(xiàn)出了跑步的特征,而在圖3中y軸的特征較為清晰的表現(xiàn)了運(yùn)動的特征。而造成這一差別的原因在于用戶在跑步過程中,手機(jī)所放置的位置。

經(jīng)過一系列不同速度、不同手機(jī)放置位置的測試和圖像對比后,發(fā)現(xiàn)不管用戶的手機(jī)如何放置,在運(yùn)動過程中,X\Y\Z軸的圖像總有至少一個是表現(xiàn)為近似周期性震蕩曲線,并且曲線的峰值基本和用戶跑步的步數(shù)是一致的。但是在用戶以不同速度跑步時,這個峰值的大小是有區(qū)別的。

因此,為了實(shí)現(xiàn)計步監(jiān)測功能,筆者需要找到一個閾值,用于過濾出反應(yīng)運(yùn)動步數(shù)特征的有效值。為此筆者進(jìn)行了一些測試,選取了展現(xiàn)相對靜止時x-y-z加速度與時間的典型圖像,如圖4、圖5所示:

通過對基礎(chǔ)數(shù)據(jù)進(jìn)行對比分析,筆者最終選定閥值如表1所示:

算法實(shí)現(xiàn):

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++;

//一段計錄結(jié)束后

stepCount = stepCount/2;

2)俯臥撐監(jiān)測

通過對俯臥撐運(yùn)動特點(diǎn)的分析,筆者發(fā)現(xiàn),在做俯臥撐的過程中,胸部位置所對應(yīng)的地面位置光線強(qiáng)度變化明顯,因此選擇采用光線傳感器來實(shí)現(xiàn)俯臥撐計數(shù)。示意圖如圖6、7所示:

確定放置位置之后,筆者采集了做俯臥撐過程中光線傳感器的基礎(chǔ)數(shù)據(jù)值,并繪制了光線強(qiáng)度與時間的圖像,如圖8所示:

通過光線強(qiáng)度與時間的圖像可以看出,俯臥撐運(yùn)動過程中,光線傳感器的變化是非常規(guī)律的并且能夠很清晰的反應(yīng)光線俯臥撐的個數(shù),即在停止過程中光線強(qiáng)度不變;在俯臥撐下降過程中,光線強(qiáng)度逐漸減小到特定值;在俯臥撐上升過程中逐漸增加到特定值。這種清晰的曲線特點(diǎn)使得俯臥撐計數(shù)變得相對簡單。

通過對圖像的分析,發(fā)現(xiàn)和計步監(jiān)測類似的,也需要從數(shù)據(jù)中找到一個閥值,用于區(qū)分是否觸發(fā)記錄一個俯臥撐。經(jīng)過一系列的實(shí)驗,綜合考慮了外界光照環(huán)境及人體區(qū)別,本文最終選定閥值為5。

算法實(shí)現(xiàn):

//整型處理

light= (int) event.values[0];

if(light<5){

pushUpCount++;

}

//記錄結(jié)束后,Count除2

pushUpCount = pushUpCount/2;

3.4 界面設(shè)計

為了給用戶以更好的體驗,本運(yùn)動監(jiān)測應(yīng)用采用簡潔清晰的界面設(shè)計風(fēng)格,突出主體,簡單易用。圖9、圖10為應(yīng)用部分效果圖。

4 安裝及測試

本運(yùn)動監(jiān)測應(yīng)用是基于Android 2.1及以上版本平臺的手機(jī)應(yīng)用軟件。本文將該應(yīng)用安裝在了Nexus5、三星s5等型號的手機(jī)上,并進(jìn)行了測試。經(jīng)過測試,俯臥撐數(shù)量監(jiān)測誤差在正負(fù)兩個以內(nèi);步數(shù)監(jiān)測效果穩(wěn)定性一般,在慢跑狀態(tài)下誤差較小,在步行條件下誤差不穩(wěn)定。

5 結(jié)束語

本應(yīng)用基于Android平臺所提供的傳感器API以及Android手機(jī)上常用的加速度傳感器和光線傳感器,通過對傳感器數(shù)據(jù)進(jìn)行分析,實(shí)現(xiàn)了記步監(jiān)測以及俯臥撐監(jiān)測。隨著手機(jī)傳感器的日益豐富,可以用于監(jiān)測用戶行為的傳感器將日益增加,因此傳感器選擇以及算法都可以進(jìn)一步改進(jìn),使得監(jiān)測結(jié)果更加準(zhǔn)確。

參考文獻(xiàn):

[1] 陳曦, 梁曄. 基于Android的“樂動我心”手機(jī)應(yīng)用軟件設(shè)計與實(shí)現(xiàn)[J]. 科技廣場, 2013(10): 239-243.

[2] 馬小軍, 王滿. 基于Android平臺的手機(jī)學(xué)吉他軟件的開發(fā)[J]. 北京聯(lián)合大學(xué)學(xué)報: 自然科學(xué)版, 2012, 26(1): 28-32.

[3] 孫富宗, 梁曄. 基于Android平臺的人性化超市輔助系統(tǒng)設(shè)計與實(shí)現(xiàn)[J]. 科技廣場, 2013(9): 234-238.

[4] 丁玨. 基于Android微心理App系統(tǒng)設(shè)計與實(shí)現(xiàn)[J]. 電腦知識與技術(shù), 2016, 12(8): 56-57.

猜你喜歡
傳感器技術(shù)
傳感器技術(shù)在機(jī)電控制系統(tǒng)中的應(yīng)用
卷宗(2016年10期)2017-01-21 14:54:01
以傳感器技術(shù)為基礎(chǔ)的機(jī)電自動化控制探究
傳感器技術(shù)課程教學(xué)改革的研究與探索
考試周刊(2016年78期)2016-10-12 12:42:34
高職傳感器技術(shù)課程教學(xué)改革探討
《傳感器技術(shù)》“研究性學(xué)習(xí)”教學(xué)方法初探
考試周刊(2016年47期)2016-06-29 09:23:59
“傳感器技術(shù)”課程教學(xué)改革探討
武义县| 舟山市| 仲巴县| 太原市| 扎兰屯市| 咸丰县| 阿尔山市| 水城县| 宜都市| 石楼县| 嘉祥县| 临沧市| 长治县| 钟祥市| 宜都市| 云梦县| 泌阳县| 阿坝县| 东乡族自治县| 临夏县| 永济市| 专栏| 电白县| 萍乡市| 滨州市| 钟祥市| 手游| 临湘市| 抚松县| 五指山市| 安溪县| 潞城市| 云安县| 外汇| 荣成市| 杂多县| 平顺县| 大宁县| 华安县| 孝昌县| 崇左市|