999精品在线视频,手机成人午夜在线视频,久久不卡国产精品无码,中日无码在线观看,成人av手机在线观看,日韩精品亚洲一区中文字幕,亚洲av无码人妻,四虎国产在线观看 ?

基于藍牙技術的推送系統的設計和實現*

2016-11-18 09:04:21田林青余成波孔慶達王艷麗
網絡安全與數據管理 2016年20期
關鍵詞:數據庫系統

田林青,余成波,孔慶達,王艷麗

(重慶理工大學 遠程測試與控制研究所,重慶市400054)

?

基于藍牙技術的推送系統的設計和實現*

田林青,余成波,孔慶達,王艷麗

(重慶理工大學 遠程測試與控制研究所,重慶市400054)

互聯網和移動終端的普及推動著LBS向ILBS發展,而藍牙與移動終端良好的契合使其成為室內定位技術的首選。分析了基于藍牙技術的推送系統的原理,實現了以藍牙節點、移動終端、服務器為三大模塊的推送系統。實驗結果表明,以藍牙4.0設備發射信號、BluetoothAdapter掃描搜索、HttpURLConnection傳輸數據、JPush推送信息、Sae云平臺移植組成的室內定位推送系統具有開發周期短、消息推送實時性強、穩定性好等優點。基于此構建的藍牙技術的推送系統在室內定位方面具有很大的市場價值。

藍牙;ILBS;信息推送

0 引言

近幾年,LBS(基于位置信息服務)技術已經在人們生活中得到廣泛應用,比如通過GPS來獲得位置信息。然而,互聯網和移動終端的普及和發展,推動著LBS向ILBS(基于室內位置服務)過渡。一些景點、商場、博物館、機場等公共場所需要室內定位來提供精確的位置信息,而GPS等室外定位技術由于信號在室內衰減快,不能用于室內定位。室內定位技術主要有藍牙、ZigBee、WiFi、射頻識別、超寬帶等。由于藍牙和移動終端的良好契合以及藍牙4.0版本推出以來的低功耗、低成本、高性價比等優點,使得藍牙技術成為移動終端室內定位技術的首選。本文基于藍牙技術,選取藍牙4.0設備作為信號發射節,BluetoothAdapter用來掃描搜索各節點信息,HttpURLConnection用來傳輸采集到的所需信息,JPush用來向終端推送消息,以及最后將本地服務器端程序部署到Sae云平臺,從而完成整個推送系統的設計。

1 推送系統分析

1.1 推送系統工作原理

推送系統工作原理圖如圖1所示。在室內環境根據所需部署一定數量的藍牙節點AP,攜帶安裝相應APP的移動終端進入定位區域采集各節點發出的信息[1-2]。APP接收各藍牙節點發出的設備名和信號強度等信息并將其發送至服務器端,服務器端結合室內定位算法訪問離線建立的數據庫從而得到終端具體位置。最后通過得到的具體位置調用第三方推送服務器完成消息的推送[3]。系統核心部分包括采集模塊、傳輸模塊和推送模塊。而訪問數據庫和調用第三方推送服務器的操作都集成在服務器中。

圖1 推送系統工作原理圖

1.2 硬件選型

推送系統的硬件部分主要是對藍牙發射節點的選取。藍牙4.0是2012年最新藍牙版本,是藍牙3.0的升級版本,較3.0版本具有更省電、成本低、3 ms低延遲、超長有效連接距離、AES-128加密等優點。與4.0以后的版本比較,4.0的優勢則在于其成熟的技術已經得到廣泛的應用以及具有更高的性價比,因此藍牙4.0設備是實驗首選的藍牙發射節點。本系統采用CC2540作為核心芯片,尺寸為41×41×21(mm),采用電池CR2477(1000 mAh),采用工作時間能持續一年以上的iBeacon作為藍牙發射節點。其能提供空曠地大于50 m以上的信號接收以及500 ms的廣播頻率和-0 dBm的廣播功率,滿足系統所需要求。產品如圖2所示。通過產品表面USB接口旁邊的開關即可打開設備。

圖2 藍牙節點

2 采集模塊

持有相應APP的移動終端進入藍牙節點覆蓋區域,當用戶打開APP并且根據用戶名和密碼登錄成功之后便可以進行定位。而定位的觸發是通過定位按鈕來進行開啟定位的。這樣APP就會自動接收來自藍牙節點的信息,這些信息包括UUID、NAME、RSSI、Major、Minor、MAC等。而采集模塊要做的就是根據接收到的多個藍牙節點數據,從中獲得所需數據,然后將有用的數據打包以進行傳輸。通常的做法是利用Android四大組件之一的Broadcast Receiver[4]。先對Receiver進行注冊,然后再在實例化的Receiver中根據filter過濾廣播。由于實例化的Receiver是一個條件循環語句,因此便能在其內部處理多個節點發過來的信息,從而對有用數據進行整理打包。但此方法的弊端在于廣播接收器本身就是一個子線程,而這個子線程持續的時間不長便會自動結束,因此不能在其中加入訪問網絡等耗時操作,否則子線程關閉時會強制結束在其中加入的操作。然而此系統的定位本身就是一個訪問服務器的網絡耗時操作,還涉及數據庫的訪問和消息推送,因此這種方法并不可取。

針對搜索BLE低功耗藍牙設備,Android官方提供了一種專門掃描藍牙設備的方法startLeScan。這種方法通過藍牙適配器BluetoothAdapter啟動,并且需要傳入BluetoothAdapter.LeScanCallback類型參數,這里將其命令為Scancallback。而其內部的onLeScan方法實現了核心數據的接收和處理。核心代碼如下:

public void onLeScan(BluetoothDevice device, int rssi, byte[] scanRecord) {

int startByte = 2;

boolean patternfound = false;

//尋找iBeacon

while (startByte <= 5) {

if (((int) scanRecord[startByte + 2] & 0xff) == 0x02 &&((int) scanRecord[startByte + 3] & 0xff) == 0x15) {

patternfound = true;

break;

}

startByte++;

}

//如果找到藍牙設備

if (patternfound) {

//此處限于篇幅,獲得所需的設備名和信號強度值即可

ibeaconName = device.getName();

mrssi = rssi;

}

}

在onLeScan方法內部就能拿到所需的節點發送信息。由于Scancallback是一個循環,設備會不斷地搜索來自附近的藍牙節點發出的信息,并且不會自動關閉此掃描,因此能夠在此循環中加入耗時操作,很好地解決了室內定位的耗時問題。

3 傳輸模塊

經過APP搜索得到的藍牙節點的有用信息要通過聯網耗時操作傳輸到服務器端,然后服務器根據搜索到的信息來進行相應處理。Android通過HTTP訪問網絡通常有兩種方式:Apache的HttpClient和Java的HttpURLConnection[5]。前者是Android SDK集成了Apache的模塊,后者是Java的JDK中自帶的類。盡管HttpClient更加豐富、高效,但是考慮到實時定位要多次地訪問服務器,因此這里選擇性能和穩定性更好的HttpURLConnection進行訪問傳輸[6]。核心代碼如下:

//定義訪問服務器地址

String request_url="";

//定義傳輸的參數,即采集模塊中得到的數據

String params="";

//拼接

URL url = new URL(request_url + params);

//開啟連接

HttpURLConnection connection = (HttpURLConnection) url.openConnection();

//連接超時時限設置(根據需要設置)

connection.setConnectTimeout(5*1000);

//POST方式較GET方式更安全

connection.setRequestMethod("POST");

//表示訪問網絡時需要傳入參數

connection.setDoInput(true);

//利用狀態碼判斷訪問服務器是否成功

if (connection.getResponseCode() == 200) {

//構造方法,傳入參數。從服務器端拿到相應json數據

return inputStream2String(connection.getInputStream());

}

4 推送模塊

服務器將傳輸來的數據結合數據庫和室內定位算法進行處理,得到位置坐標,此處用x和y表示,然后根據此坐標進行相應的消息推送。PUSH(推送)技術相對于PULL(拉取)技術而言,其獲得信息的實時性和針對性更強,是一種由服務器主動推送消息的服務機制。實現推送的方式大致分為四類:C2DM(谷歌提供)、MQTT協議(非開源)、XMPP協議、第三方推送平臺[7]。考慮到資源的可利用性以及第三方平臺的逐漸成熟、免費、開發周期短等優點,選擇極光推送JPush作為第三方推送服務器進行消息推送。利用JPush實現服務器向客戶端推送消息需要部署兩個核心點:Android端和服務器端。而這種部署方式在JPush官方文檔中已經做了大致說明,現將其總結如下。

(1)Android端

①導入官網提供的的推送所需jar包和3個so文件;so文件需在main目錄下新建一個名為jniLibs的文件夾用來存放,這樣jar包才能通過文件名讀取so文件。

②向APP的配置文件AndroidManifest.xml中加入推送所需權限;應用程序包名package應和官方創建應用時的包名一致;配置文件中name="JPUSH_APPKEY"一項的value值應該填入官網創建應用后生成的AppKey,這樣JPush服務器才會根據此key值推送消息到嵌入此key值的客戶端。

③在應用程序根目錄下創建繼承application的類,在其方法中加入JPushInterface.init(this)語句來初始化JPush的SDK。

(2)服務器端

①導入相應jar包和3個依賴包。

②在服務器端寫入相應相應邏輯。關鍵在于創建JPushClient對象,傳入創建應用時產生的參數AppKey和Master Secret;再創建PushPayload對象,傳入想傳輸的消息message;最后通過jpushClient.sendPush(payload)即可以通過服務器向JPush服務器推送消息,此消息再經過JPush服務器推送到客戶端APP。

5 本地服務器搭建測試和云部署

相應邏輯和室內定位算法的實現幾乎全在服務器端。服務器是收發消息的中轉站,訪問數據庫并調用JPush推送消息。項目最初是通過搭建本地服務器進行調試,調試成功之后再將項目代碼部署到云服務器上。

5.1 本地服務器搭建測試

搭建:MyEclipse10.7+MySQL5.6+TomCat7.0構成本地服務器核心環境;連接數據庫時注意數據庫的用戶名、密碼和訪問端口應與安裝MySQL服務器中一致。

測試:服務器端邏輯采用基本的MVC模式。室內定位算法擬采用基于藍牙4.0的接近度分類室內定位算法進行實現[8-9]。這種非參數化的室內定位算法需要事先在定位范圍內采集數據并放入數據庫中,然后設置好數據庫的連接,用TomCat啟動程序即可。定位范圍擬采用6 m×6 m空間,在空間內4個角布置4個藍牙節點,客戶端根據需要設置固定時間間隔訪問服務器進行定位。為方便觀察定位結果,將接收的信號強度值、設備名稱和定位坐標分開調試并輸出到服務器控制臺顯示。調試結果分別如圖3和圖4所示。

圖3 調試1

圖4 調試2

其中flag作為登錄和定位的標識,而返回的json作為是否訪問成功的標識,結果為1表示訪問成功。調試結果表明能夠根據所搭建環境和擬采用的算法進行實時定位。

5.2 云部署

應用要得到廣泛的應用,其應用范圍就要不受距離的限制。將本地服務器代碼部署到云服務器上,讓所有安裝相應APP的用戶能夠通過網絡就能獲得相應服務是必然的選擇[10]。Sae是新浪提供的云服務器,其在國內云提供商中發展時間最長,功能相對完善,文檔全面完整,且支持PHP、Python、Java等語言。

(1)工程文件上傳:將本地寫好的工程文件利用MyEclipse導出war包,且war包名要和Sae官網創建的應用名稱相同,這里用bluetooth表示。注意本地JDK版本的匹配,選1.6最好。

(2)數據庫連接配置:云服務器自帶數據庫服務,這和本地MySQL類似,一樣可以利用JDBC進行訪問,修改其中的用戶名、密碼和端口號即可。

//URL中的AppName需要替換成相應的AppName

URL="jdbc:mysql://w.rdc.sae.sina.com.cn:3307/app_AppName";

USERNAME="SaeUserInfo.getAccesskey()";

PASSWORD="SaeUserInfo.getSecretkey()";

AppName="SaeUserInfo.getAppName()";

其中SaeUserInfo類需要到Sae官網去下載。代碼上傳后,利用Web端網頁進行用戶名、密碼登錄測試。當成功訪問云服務器數據庫后應該返回json格式的數據1,測試結果如圖5所示。

圖5 云部署測試

在URL處輸入所要訪問的鏈接來檢驗代碼是否上傳成功。通過訪問所傳war包中的登錄模塊,返回json={“result”:1},結果與圖3、圖4中的本地服務器測試返回的json一致,因此代碼上傳成功。

6 系統測試與效果分析

設計app,實現基本的登錄、注冊功能,并在登錄成功后提供定位推送功能,通過登錄成功界面的定位按鈕進行定位。

為了更加清楚地觀察收發過程核心數據的變化,設計一個界面(圖6所示)作為點擊定位按鈕后來實時地顯示藍牙節點數據。圖6中接收的數據會傳輸到服務器端,經過提前寫好的室內定位算法并且訪問數據庫從而完成相應的推送(圖7所示)。

圖6 顯示界面

圖7 推送界面

推送的結果是源于對定位區域6 m×6 m的四等分。經多次定位區域內隨機測試,客戶端能根據終端位置變化實時地接收到推送的消息。

7 結論

本文研制了一種基于藍牙4.0技術的推送系統。該系統主要由藍牙節點、移動端APP、服務器Server三大部分組成。并且根據系統的核心難點對各部分的關鍵模塊做了分析,其中包括采集模塊、傳輸模塊和推送模塊。最后將寫好的本地服務器代碼部署到云服務器,完成了整個系統的設計。經測試,該推送系統具有良好的穩定性和實時性,能夠依賴于室內定位算法提供較準確的定位,在室內定位應用領域具有巨大的市場價值。

[1] 石志京,徐鐵峰,劉太君,等.基于iBeacon基站的室內定位技術研究[J].移動通信,2012,39(7):88-91.

[2] RIDA M E, Liu Fuqiang, JADI Y, et al.Indoor location position based on Bluetooth signal strength[C].2015 2nd International Conference on Information Science and Control Engineering,2015:769-773.

[3] 劉平.Android手機訪問服務器的一種數據交互方法[J].通信與網絡,2010,18(9):96-98.

[4] SMITH D, FRIESEN J. Android recipes:a problem-solution approach (Second Edition)[M].New York: Apress Media,2012.

[5] 馬昭征.基于HTTP的安卓與服務器交互方法的實現[J].無線互聯科技,2015(3):92-96,114.

[6] 李寧.Android開發完全講義[M].北京:中國水利水電出版社,2012.

[7] 田雷.基于移動終端的旅游信息推送服務系統關鍵技術研究[D].杭州:浙江大學,2010.

[8] 莫倩,熊碩.基于藍牙4.0的接近度分類室內定位算法[J].宇航計測技術,2014,34(6):66-70.

[9] LEE S W, KOO B H, JIN M G, et al. Range-free indoor positioning system using smartphone with Bluetooth capability [J]. 2014 IEEE/ION Position, Location and Navigation Symposium, PLANS 2014, 2014:657-662.

[10] 張愛玉,周衛東,夏吉廣,等.云平臺搭建的關鍵技術研究[J]. 中國安防,2012(9):88-94.

Design and implementation of push system based on Bluetooth technology

Tian Linqing,Yu Chengbo,Kong Qingda,Wang Yanli

(Institute of Remote Test and Control, Chongqing University of Technology, Chongqing 400054, China)

The popularity of the Internet and mobile terminal promotes the development of LBS to ILBS. A good combination with mobile terminal makes it the first choice of indoor positioning technology for Bluetooth. This paper analyses principle of push system based on Bluetooth technology, and realises the push system consisting of Bluetooth node, mobile terminal and server. The experimental results shows that indoor positioning push system consisting of lanching signal with Bluetooth 4.0 equipment,scanning signal with BluetoothAdapter, transmiting data with HttpURLConnection,pushing message with JPush and deploying on Sae Cloud platforms has the advantages of short development cycle,high real-time of pushing message,good stability and so on.Push system based on this design pattern has great market value in indoor positioning.

Bluetooth; ILBS; information push

國家自然科學基金資助項目(61402063);重慶市科技人才培養計劃(新產品研發團隊)資助項目(CSJC2013KJRC-TDJS40012);重慶市高校優秀成果轉化資助項目(KJZH14213)

TP393.0

A

10.19358/j.issn.1674- 7720.2016.20.017

田林青,余成波,孔慶達,等. 基于藍牙技術的推送系統的設計和實現[J].微型機與應用,2016,35(20):61-64.

2016-06-21)

田林青(1991-),男,碩士研究生,主要研究方向:基于藍牙低功耗的室內定位技術、無線傳感網絡。

余成波(1965-),通信作者,男,博士,教授,主要研究方向:遠程測試與控制技術、信號與信息處理。E-mail:yuchengbo@cqut.edu.cn。

猜你喜歡
數據庫系統
Smartflower POP 一體式光伏系統
工業設計(2022年8期)2022-09-09 07:43:20
WJ-700無人機系統
ZC系列無人機遙感系統
北京測繪(2020年12期)2020-12-29 01:33:58
基于PowerPC+FPGA顯示系統
半沸制皂系統(下)
連通與提升系統的最后一塊拼圖 Audiolab 傲立 M-DAC mini
數據庫
財經(2017年15期)2017-07-03 22:40:49
數據庫
財經(2017年2期)2017-03-10 14:35:35
數據庫
財經(2016年15期)2016-06-03 07:38:02
數據庫
財經(2016年3期)2016-03-07 07:44:46
主站蜘蛛池模板: 最新加勒比隔壁人妻| 国产无码性爱一区二区三区| 亚洲a免费| 免费人成视网站在线不卡| 国产爽歪歪免费视频在线观看| 欧美在线中文字幕| 亚洲成a人片在线观看88| 超清无码一区二区三区| 久久久噜噜噜| 国产h视频免费观看| 午夜福利在线观看入口| 国产成人a在线观看视频| 91视频区| 老司机午夜精品网站在线观看 | 国产高清色视频免费看的网址| 真实国产乱子伦视频| 国产女人爽到高潮的免费视频| 九色91在线视频| 国产男人天堂| 成人精品午夜福利在线播放| 国产www网站| 中文国产成人精品久久| 亚洲色图另类| 国内精品久久九九国产精品| 91精品小视频| 亚洲嫩模喷白浆| 极品国产一区二区三区| 亚洲有码在线播放| www欧美在线观看| 国产一级在线观看www色| 亚洲第一黄片大全| 色偷偷一区二区三区| 又粗又大又爽又紧免费视频| 午夜国产大片免费观看| 91网在线| 国产亚洲一区二区三区在线| 久久美女精品| 久久久久亚洲精品成人网| 色丁丁毛片在线观看| 丁香五月激情图片| 国产一区二区三区免费观看| 色婷婷综合在线| 无码区日韩专区免费系列| 中文字幕波多野不卡一区| 亚洲成肉网| 国产精品国产主播在线观看| 久久这里只有精品23| 亚洲国产精品无码AV| 99久久99这里只有免费的精品| 亚洲美女AV免费一区| 伊人久综合| 久久semm亚洲国产| 欧美亚洲第一页| 亚洲国产亚综合在线区| 国产自在自线午夜精品视频| 亚洲永久精品ww47国产| 在线国产91| 日韩毛片免费| 久久99蜜桃精品久久久久小说| 曰韩免费无码AV一区二区| 国产美女无遮挡免费视频| 亚洲无码日韩一区| 亚洲性日韩精品一区二区| 免费高清自慰一区二区三区| 国产成人综合欧美精品久久| 在线观看av永久| 午夜爽爽视频| 五月婷婷综合在线视频| 久久综合色视频| 99在线观看国产| 四虎永久在线精品影院| 欧美成人精品一级在线观看| 特级毛片8级毛片免费观看| 国产成人无码AV在线播放动漫 | 无码免费的亚洲视频| 精品中文字幕一区在线| 国产精品所毛片视频| 999精品视频在线| 亚洲色无码专线精品观看| 777国产精品永久免费观看| 精品在线免费播放| 精品人妻系列无码专区久久|