• 
    

    
    

      99热精品在线国产_美女午夜性视频免费_国产精品国产高清国产av_av欧美777_自拍偷自拍亚洲精品老妇_亚洲熟女精品中文字幕_www日本黄色视频网_国产精品野战在线观看

      404 Not Found


      nginx
      404 Not Found

      404 Not Found


      nginx
      404 Not Found

      404 Not Found


      nginx
      404 Not Found

      404 Not Found


      nginx
      404 Not Found

      404 Not Found


      nginx
      404 Not Found

      404 Not Found


      nginx

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

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

      劉小安+彭濤+賈杉杉

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

      關(guān)鍵詞:Android;傳感器技術(shù);運(yùn)動(dòng)監(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畹母鱾€(gè)方面,例如:家居控制、運(yùn)動(dòng)監(jiān)測。在運(yùn)動(dòng)監(jiān)測功能中,需要充分利用Android平臺給開發(fā)者提供的接口以及手機(jī)本身所配備的豐富的硬件,獲取用戶的運(yùn)動(dòng)基礎(chǔ)數(shù)據(jù),并通過相關(guān)算法進(jìn)行加工和處理,從而實(shí)現(xiàn)通過手機(jī)對用戶運(yùn)動(dòng)進(jìn)行監(jiān)測和數(shù)據(jù)記錄。

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

      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)位移傳感器,這些傳感器測量沿三個(gè)軸線測量加速度和旋轉(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)動(dòng)監(jiān)測應(yīng)用設(shè)計(jì)

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

      3.1 客戶端

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

      1)計(jì)步監(jiān)測

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

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

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

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

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

      stepCount = stepCount/2;

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

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

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

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

      通過對圖像的分析,發(fā)現(xiàn)和計(jì)步監(jiān)測類似的,也需要從數(shù)據(jù)中找到一個(gè)閥值,用于區(qū)分是否觸發(fā)記錄一個(gè)俯臥撐。經(jīng)過一系列的實(shí)驗(yàn),綜合考慮了外界光照環(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è)計(jì)

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

      4 安裝及測試

      本運(yùn)動(dòng)監(jiān)測應(yīng)用是基于Android 2.1及以上版本平臺的手機(jī)應(yīng)用軟件。本文將該應(yīng)用安裝在了Nexus5、三星s5等型號的手機(jī)上,并進(jìn)行了測試。經(jīng)過測試,俯臥撐數(shù)量監(jiān)測誤差在正負(fù)兩個(gè)以內(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的“樂動(dòng)我心”手機(jī)應(yīng)用軟件設(shè)計(jì)與實(shí)現(xiàn)[J]. 科技廣場, 2013(10): 239-243.

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

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

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

      猜你喜歡
      傳感器技術(shù)
      傳感器技術(shù)課程教學(xué)改革的研究與探索
      高職傳感器技術(shù)課程教學(xué)改革探討
      《傳感器技術(shù)》“研究性學(xué)習(xí)”教學(xué)方法初探
      404 Not Found

      404 Not Found


      nginx
      404 Not Found

      404 Not Found


      nginx
      404 Not Found

      404 Not Found


      nginx
      404 Not Found

      404 Not Found


      nginx
      404 Not Found

      404 Not Found


      nginx
      壤塘县| 府谷县| 徐水县| 滦平县| 富阳市| 沧州市| 武宣县| 甘洛县| 胶南市| 扶余县| 武鸣县| 汝南县| 都兰县| 九江县| 祁门县| 广西| 岳普湖县| 远安县| 南丰县| 深水埗区| 达尔| 福海县| 云浮市| 田阳县| 电白县| 清新县| 清镇市| 北安市| 织金县| 平顶山市| 新巴尔虎左旗| 江华| 兴宁市| 黎平县| 罗定市| 台前县| 洪江市| 双桥区| 淳化县| 武宁县| 大兴区|