• 
    

    
    

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

      藍(lán)牙智能騎行頭盔Android終端軟件的設(shè)計(jì)與實(shí)現(xiàn)

      2018-12-19 12:44:34黃思遠(yuǎn)周淵平苗青
      現(xiàn)代計(jì)算機(jī) 2018年32期
      關(guān)鍵詞:頭盔流程圖線程

      黃思遠(yuǎn),周淵平,苗青

      (1.四川大學(xué)電子信息科學(xué)技術(shù)學(xué)院,成都610065;2.78167 部隊(duì)610017)

      0 引言

      隨著人們的生活水平不斷提升,街道上的車輛增加許多,道路上騎行的風(fēng)險(xiǎn)也驟增,車禍?zhǔn)鹿暑l發(fā)。不少摩托車事故都是因?yàn)轳{駛員在駕駛過(guò)程中操作手機(jī)引起的。為了減少這種風(fēng)險(xiǎn),設(shè)計(jì)了一款智能騎行頭盔,可以在騎行時(shí)便捷地完成一些手機(jī)的功能。此頭盔使用藍(lán)牙通信技術(shù),將手機(jī)端和頭盔端聯(lián)系起來(lái),可以在騎行時(shí)無(wú)需操作手機(jī)就可以便捷地通過(guò)語(yǔ)音操控手機(jī)的一些功能。這樣,既解放了雙手,又可以讓騎行者專注于騎行。對(duì)于廣大騎行者,該頭盔有著巨大的市場(chǎng)潛力。

      為了滿足頭盔和手機(jī)的交互的便利性和功能封裝聚合的需求,本文設(shè)計(jì)了一款頭盔控制軟件系統(tǒng)。方便頭盔端和手機(jī)端的交互,包括數(shù)據(jù)通信、語(yǔ)音控制、地圖導(dǎo)航、音樂(lè)控制等功能,提高了用戶體驗(yàn)的同時(shí),強(qiáng)化了頭盔的功能,為使用者提供了便利。

      1 藍(lán)牙智能騎行頭盔Android終端系統(tǒng)概述

      本節(jié)將簡(jiǎn)單介紹系統(tǒng)的操作系統(tǒng)、開發(fā)環(huán)境、開發(fā)語(yǔ)言和使用的工具類,然后介紹系統(tǒng)的主要邏輯結(jié)構(gòu)和功能組成。

      1.1 系統(tǒng)集成環(huán)境

      合適的系統(tǒng)集成環(huán)境可以使系統(tǒng)的運(yùn)行更高效更穩(wěn)定。Android系統(tǒng)開源免費(fèi),是全球使用最廣泛的操作系統(tǒng),因此本軟件采用了Android系統(tǒng)。本軟件采用Android Studio平臺(tái)開發(fā),支持Android 4.0到Android 7.0的系統(tǒng)。語(yǔ)音識(shí)別和文本理解使用了科大訊飛的API,地圖導(dǎo)航使用了百度地圖的API,藍(lán)牙連接使用了谷歌的android.bluetooth包。

      表1 系統(tǒng)集成環(huán)境

      1.2 系統(tǒng)的總體結(jié)構(gòu)

      如圖1所示,一個(gè)完整的藍(lán)牙智能騎行頭盔An?droid終端系統(tǒng),主要包括監(jiān)聽輸入、藍(lán)牙通信、語(yǔ)音處理、功能實(shí)現(xiàn)。整個(gè)藍(lán)牙智能騎行頭盔Android終端系統(tǒng)的功能可以分為兩個(gè),一是語(yǔ)音指令的獲取和解析,二是語(yǔ)音指令的具體功能實(shí)現(xiàn)。語(yǔ)音指令獲取過(guò)程:手機(jī)收到我們的按鍵提示后監(jiān)聽藍(lán)牙麥克風(fēng)的語(yǔ)音輸入,如果監(jiān)聽到語(yǔ)音信號(hào)輸入,則通過(guò)藍(lán)牙串口傳輸?shù)绞謾C(jī)。串口數(shù)據(jù)進(jìn)入手機(jī)后由后臺(tái)線程通過(guò)調(diào)用訊飛的語(yǔ)音解析接口將語(yǔ)音信號(hào)轉(zhuǎn)成文字形式的字符串,得到文本數(shù)據(jù)[1],提取其中的關(guān)鍵詞,隨即開啟一條線程傳入?yún)?shù),執(zhí)行語(yǔ)音命令所對(duì)應(yīng)的功能。系統(tǒng)結(jié)構(gòu)如圖1所示。

      圖1 系統(tǒng)結(jié)構(gòu)

      2 硬件系統(tǒng)和藍(lán)牙連接協(xié)議簡(jiǎn)介

      2.1 硬件系統(tǒng)簡(jiǎn)介

      硬件系統(tǒng)包括C8051F020單片機(jī)和藍(lán)牙模塊BK8000L。C8051F020是基于CIP-51的微控制器,比傳統(tǒng)8051系列單片機(jī)執(zhí)行速度提升很大。藍(lán)牙模塊BK8000L體積小、重量輕、功能強(qiáng)大,可以跟許多類型手機(jī)連接。將藍(lán)牙和麥克風(fēng)分別連在單片機(jī)上,將其放置在頭盔上。效果如圖2所示。

      圖2 硬件組成

      2.2 藍(lán)牙連接協(xié)議簡(jiǎn)介

      藍(lán)牙連接協(xié)議結(jié)構(gòu)可分為底層硬件模塊、中間協(xié)議層和高端應(yīng)用層三大部分,底層硬件模塊為數(shù)據(jù)的無(wú)線傳輸提供硬件支持。中間協(xié)議層定義了4個(gè)藍(lán)牙核心協(xié)議,是其他上層協(xié)議實(shí)現(xiàn)的基礎(chǔ)。高端應(yīng)用層可以讓開發(fā)者自定義各種應(yīng)用模型的剖面(Profile)。

      本系統(tǒng)主要配置了高端應(yīng)用層中的藍(lán)牙鏈路方式。藍(lán)牙物理鏈路分兩種,同步鏈路SCO(Synchronous Connection Oriented)和異步鏈路 ACL(Asynchronous Connectionless)。本系統(tǒng)的采用的是SCO方式,此連接類型主要適用于同步語(yǔ)音傳輸。SCO連接為對(duì)稱連接,通過(guò)有規(guī)律的使用保留時(shí)隙來(lái)維持SCO鏈接,可以傳輸對(duì)時(shí)間要求很高的數(shù)據(jù)通信。傳輸即時(shí)、快速,符合頭盔傳輸?shù)囊蟆?/p>

      在本系統(tǒng)中,通過(guò)調(diào)用mAudioManager類的start?BluetoothSco()方法打開SCO連接。藍(lán)牙SCO連接建立需要時(shí)間,連接建立后,使用廣播接收該消息而進(jìn)入后續(xù)邏輯。

      3 軟件系統(tǒng)實(shí)現(xiàn)

      軟件系統(tǒng)主要由兩部分構(gòu)成:一是手機(jī)界面設(shè)計(jì),二是后臺(tái)線程設(shè)計(jì)。下面對(duì)這兩部分的具體實(shí)現(xiàn)做詳細(xì)闡述。

      3.1 手機(jī)界面設(shè)計(jì)

      本軟件的界面主要有四個(gè),分別是初始連接界面,主界面以及導(dǎo)航界面。初始連接界面負(fù)責(zé)連接藍(lán)牙;主界面負(fù)責(zé)識(shí)別語(yǔ)音指令以及響應(yīng)結(jié)果。

      系統(tǒng)的界面布局均使用了相對(duì)布局RelativeLayout管理器。界面設(shè)計(jì)使用了XML(Extensible Markup Lan?guage)布局和代碼控制 UI(User Interface)界面相結(jié)合。主界面使用了Botton、ImageView、RadioButton等控件,地圖導(dǎo)航使用了MapView、EditText等控件,本系統(tǒng)的主界面如圖3所示。點(diǎn)擊下方正中心的圓圈按鈕即可開始語(yǔ)音識(shí)別;點(diǎn)擊上傳聯(lián)系人按鈕能將本地通信錄信息上傳,便于撥打電話和發(fā)送短信;點(diǎn)擊地圖按鈕或語(yǔ)音識(shí)別可以進(jìn)入地圖界面,開啟導(dǎo)航功能。選項(xiàng)設(shè)置可以個(gè)性化配置語(yǔ)音識(shí)別功能;點(diǎn)擊手機(jī)按鈕可以選擇使用手機(jī)端還是頭盔端發(fā)出語(yǔ)音消息。當(dāng)使用播放歌曲功能時(shí),歌曲的信息如封面、歌曲名稱、加載進(jìn)度,播放進(jìn)度會(huì)顯示在上方。

      圖3 軟件主界面

      3.2 后臺(tái)線程實(shí)現(xiàn)

      后臺(tái)線程有藍(lán)牙連接、語(yǔ)音識(shí)別、音樂(lè)播放、地圖導(dǎo)航以及打電話發(fā)短信查天氣,等等。其中最核心的是語(yǔ)音識(shí)別,依靠快速可靠的語(yǔ)音識(shí)別,才能最大地發(fā)揮軟件的作用。

      (1)藍(lán)牙連接模塊

      在手機(jī)與頭盔的連接中,手機(jī)為客戶端,頭盔為服務(wù)端,手機(jī)端主動(dòng)請(qǐng)求連接頭盔端。首先調(diào)用Blue?toothAdapter檢查當(dāng)前手機(jī)是否支持藍(lán)牙,如果不支持的話退出軟件,如果支持藍(lán)牙且藍(lán)牙未啟用,則請(qǐng)求用戶授權(quán)打開藍(lán)牙開關(guān)。之后獲取BluetoothAdapter對(duì)象device,使用藍(lán)牙適配器搜索附近藍(lán)牙設(shè)備信息,因?yàn)樗{(lán)牙在搜索到設(shè)備和搜索完畢都是通過(guò)廣播發(fā)送的,這里我們需要注冊(cè)廣播接收器[2]。注冊(cè)完畢后,通過(guò)廣播接收器獲取搜索得到的藍(lán)牙設(shè)備信息,然后通過(guò)設(shè)備MAC(Media Access Control)地址獲取藍(lán)牙設(shè)備對(duì)象。手機(jī)作為客戶端,通過(guò) UUID(Universally Unique Identifier)打開一條道服務(wù)器的信道來(lái)獲取設(shè)備的BluetoothSocket對(duì)象,通過(guò)此對(duì)象來(lái)連接兩個(gè)藍(lán)牙設(shè)備,語(yǔ)音信息以流的形式傳輸[3]。

      在藍(lán)牙連接成功后,即可開始藍(lán)牙通信,這個(gè)線程一直維持到程序退出,隨時(shí)等候發(fā)送數(shù)據(jù)到頭盔端或者接受頭盔端傳輸?shù)臄?shù)據(jù),保障手機(jī)端和頭盔端暢通的通信環(huán)境。藍(lán)牙通信模塊的流程圖如圖4所示。

      圖4 藍(lán)牙通信流程圖

      (2)語(yǔ)音識(shí)別模塊

      當(dāng)點(diǎn)擊語(yǔ)音識(shí)別按鈕后,頭盔端監(jiān)聽到的語(yǔ)音信息隨即通過(guò)藍(lán)牙Socket通信傳輸?shù)绞謾C(jī)端的軟件中,語(yǔ)音識(shí)別線程在手機(jī)端軟件獲取到語(yǔ)音信息后開始執(zhí)行。

      語(yǔ)音識(shí)別就是識(shí)別語(yǔ)音信號(hào),將其轉(zhuǎn)變成便于智能終端處理的文字信息。當(dāng)手機(jī)端接收到頭盔端的語(yǔ)音指令開啟監(jiān)聽信號(hào)后,藍(lán)牙麥克風(fēng)將采集到的聲波,通過(guò)藍(lán)牙發(fā)送給手機(jī)端,隨后開始語(yǔ)音識(shí)別[4]。

      首先調(diào)用語(yǔ)音接口向服務(wù)器請(qǐng)求解析語(yǔ)音信號(hào),服務(wù)器驗(yàn)證通過(guò)后將解析語(yǔ)音信息轉(zhuǎn)換成文字信息,返回 JSON(JavaScript Object Notation,JS對(duì)象簡(jiǎn)譜)數(shù)據(jù)包,然后對(duì)數(shù)據(jù)本地解析,獲取文字的字符串。這個(gè)過(guò)程通過(guò)SpeechRecognizer類調(diào)用語(yǔ)音識(shí)別服務(wù)。通過(guò)TextUnderstander類調(diào)用文本理解服務(wù),自行提取其中的關(guān)鍵字。語(yǔ)音識(shí)別模塊流程圖如圖5所示。

      圖5 語(yǔ)音識(shí)別流程圖

      (3)音樂(lè)播放模塊

      考慮到方便使用語(yǔ)音控制,音樂(lè)播放模塊是在線實(shí)時(shí)播放音樂(lè)的。開啟音樂(lè)線程時(shí)會(huì)傳入歌曲名字,因?yàn)榫W(wǎng)頁(yè)解析和服務(wù)器請(qǐng)求都是耗時(shí)的網(wǎng)絡(luò)請(qǐng)求,在Android 4.0系統(tǒng)之后建議將這些請(qǐng)求放在子線程中,所以在子線程中使用Jsoup類解析地址,獲取網(wǎng)頁(yè)上的歌曲 ID(Identification),然后通過(guò) URLConnection(Uni?form Resource Locator)類向網(wǎng)站服務(wù)器請(qǐng)求對(duì)應(yīng)歌曲ID的數(shù)據(jù),服務(wù)器驗(yàn)證后響應(yīng)請(qǐng)求返回?cái)?shù)據(jù)包,本地解析JSON數(shù)據(jù),獲取歌曲的在線播放鏈接和封面圖片鏈接,并且設(shè)置歌曲的圖片和名字等信息顯示,隨后調(diào)用MediaPlayer類,設(shè)置好參數(shù)后,調(diào)用start()方法播放歌曲,播放結(jié)束后該線程就會(huì)終止。音樂(lè)播放模塊的流程圖如圖6所示。

      圖6 音樂(lè)播放流程圖

      (4)地圖導(dǎo)航模塊

      地圖導(dǎo)模塊使用了百度地圖的SDK(Software Devel?opment Kit),該SDK小巧方便,功能強(qiáng)大,被大量應(yīng)用于實(shí)際開發(fā)。百度地圖GeoCoder類提供從地址到經(jīng)緯度坐標(biāo)或者從經(jīng)緯度坐標(biāo)到地址的轉(zhuǎn)換服務(wù)。BikeNavi?gateHelper提供路徑規(guī)劃和實(shí)時(shí)導(dǎo)航服務(wù)。從語(yǔ)音指令獲取起點(diǎn)終點(diǎn)參數(shù)后,首先校驗(yàn)SDK的版本是否正確。計(jì)算出起點(diǎn)和終點(diǎn)的經(jīng)緯度。在地圖上標(biāo)記出起點(diǎn)和終點(diǎn),然后計(jì)算起點(diǎn)和終點(diǎn)的經(jīng)緯度,并且在map中標(biāo)記。然后進(jìn)行路徑規(guī)劃。規(guī)劃好路徑后,即可開始騎行導(dǎo)航。如果要讓導(dǎo)航更精確需要開啟定位服務(wù),默認(rèn)開啟語(yǔ)音播報(bào)。這樣無(wú)需查看地圖,騎行者戴著頭盔聽語(yǔ)音即可接受導(dǎo)航[5]。導(dǎo)航過(guò)程中會(huì)有一些提示,如偏離導(dǎo)航、平均速度等、已行駛路程、距離終點(diǎn)距離等提示音,方便用戶導(dǎo)航。地圖導(dǎo)航流程圖如圖7所示。

      圖7 地圖導(dǎo)航流程圖

      (5)打電話模塊和發(fā)短信模塊

      這兩個(gè)功能都首先需要獲取聯(lián)系人的電話。通過(guò)使用ContenResolver類的query()方法查詢保存在An?droid的手機(jī)通訊錄中的聯(lián)系人,此方法在主線程中查詢數(shù)據(jù),使用query()方法后,返回?cái)?shù)據(jù)庫(kù)的游標(biāo)Cur?sor。通過(guò)游標(biāo)遍歷通訊錄中的所有聯(lián)系人信息,匹配聯(lián)系人姓名,遍歷完后需要手動(dòng)關(guān)閉Cursor。如果匹配成功,則返回電話號(hào)碼,進(jìn)行下一步打電話或者發(fā)短信操作。開啟線程時(shí)傳入聯(lián)系人名字,和本地存儲(chǔ)的通信錄進(jìn)行匹配。如果是打電話,則傳入?yún)?shù),參數(shù)為電話號(hào)碼,調(diào)用系統(tǒng)的線程ACTION_CALL。如果是發(fā)短信,則調(diào)用短信管理器的sendTextMessage()方法發(fā)送短信,傳入?yún)?shù)電話號(hào)碼短信內(nèi)容,值得注意的是,如果發(fā)送的內(nèi)容過(guò)大,則需要調(diào)用divideMessage()方法將短信內(nèi)容分段多條發(fā)送。如果發(fā)送短信成功會(huì)通過(guò)語(yǔ)音播報(bào)出發(fā)送詳情。流程圖如圖8所示。

      圖8 打電話和發(fā)短信流程圖

      (6)查詢天氣模塊

      查詢天氣時(shí),向天氣網(wǎng)站接口請(qǐng)求對(duì)應(yīng)的城市天氣,返回JSON數(shù)據(jù)包,經(jīng)過(guò)本地解析后,獲取完整的天氣各項(xiàng)指標(biāo),如風(fēng)向、濕度、溫度、天氣等情況,再通過(guò)語(yǔ)音播報(bào)出來(lái)。

      3.3 系統(tǒng)測(cè)試

      系統(tǒng)測(cè)試主要測(cè)試以下幾個(gè)方面:

      (1)藍(lán)牙麥克風(fēng)和手機(jī)端的藍(lán)牙連接是否能可靠。

      (2)語(yǔ)音信號(hào)是否足夠清晰,識(shí)別足夠準(zhǔn)確。

      (3)功能執(zhí)行是否正常,頁(yè)面顯示是否正常。

      (4)系統(tǒng)長(zhǎng)時(shí)間運(yùn)行是否穩(wěn)定、流暢。

      實(shí)際測(cè)試表明,該軟件能夠?qū)τ行?、穩(wěn)定地幫助騎行者減少騎行時(shí)操作手機(jī)的頻率,能夠做到可靠準(zhǔn)確的執(zhí)行語(yǔ)音指令。部分演示圖如圖9、圖10所示。

      圖9 音樂(lè)播放流演示

      圖10 地圖導(dǎo)航演示

      4 結(jié)語(yǔ)

      本軟件系統(tǒng)基于Android平臺(tái)開發(fā),采用了多線程并發(fā)技術(shù)進(jìn)行軟件設(shè)計(jì)。對(duì)各個(gè)線程之間的執(zhí)行進(jìn)行了合理的分配,對(duì)不同版本的Android系統(tǒng)有著良好的兼容性,為后續(xù)的軟件應(yīng)用奠定了基礎(chǔ)。

      猜你喜歡
      頭盔流程圖線程
      犬用戰(zhàn)術(shù)頭盔
      小頭盔,大防護(hù)
      當(dāng)頭盔遇上高科技
      淺談linux多線程協(xié)作
      漢字戴頭盔
      專利申請(qǐng)審批流程圖
      河南科技(2016年8期)2016-09-03 08:08:22
      專利申請(qǐng)審批流程圖
      河南科技(2016年6期)2016-08-13 08:18:29
      寧??h村級(jí)權(quán)力清單36條
      《天津醫(yī)藥》稿件處理流程圖
      Linux線程實(shí)現(xiàn)技術(shù)研究
      竹北市| 莆田市| 新泰市| 敖汉旗| 巴青县| 宁津县| 盖州市| 邛崃市| 清河县| 百色市| 绥化市| 万州区| 昔阳县| 吉水县| 如东县| 寻甸| 浦江县| 马公市| 莫力| 青田县| 博罗县| 汝州市| 太康县| 康马县| 太谷县| 丹寨县| 商都县| 海林市| 成武县| 高密市| 贵定县| 宜川县| 桃江县| 灌南县| 平南县| 留坝县| 哈密市| 大足县| 类乌齐县| 沂水县| 永顺县|