• 
    

    
    

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

      ?

      基于Android的多維級聯(lián)定位技術(shù)的研究與實現(xiàn)

      2016-07-04 19:32黃學(xué)沛張燕項炬譚馳名陳濤
      電腦知識與技術(shù) 2016年15期
      關(guān)鍵詞:GPS定位

      黃學(xué)沛+張燕+項炬+譚馳名+陳濤

      摘要:針對Android平臺提供高精度定位服務(wù),對當(dāng)前比較流行的網(wǎng)絡(luò)和GPS定位進(jìn)行分析和研究,提出一種高效、易用、可擴展,適用于室內(nèi)外環(huán)境的高精度位置服務(wù)平臺系統(tǒng)。基于Android手機平臺設(shè)計了一套高精度位置服務(wù)系統(tǒng),利用Android提供的各種資源建立高精度位置服務(wù)終端軟件。該系統(tǒng)既可用于各大公司和企業(yè),也可用于學(xué)校和商場,實現(xiàn)了位置服務(wù)的高度整合。結(jié)果表明:該系統(tǒng)硬件設(shè)備簡單,成本較低、系統(tǒng)可靠、易于使用和擴展。

      關(guān)鍵詞:Android;WiFi定位;藍(lán)牙定位;GPS定位;圖像識別定位

      中圖分類號:TP311 文獻(xiàn)標(biāo)識碼:A 文章編號:1009-3044(2016)15-0040-03

      隨著移動互聯(lián)網(wǎng)技術(shù)的發(fā)展,位置服務(wù)LBS( Location BasedServices)已經(jīng)滲透到人們生活的各個方面。能夠完成精確的定位是所有位置服務(wù)系統(tǒng)運行的基礎(chǔ)?;贕PS定位的位置服務(wù)是當(dāng)前室外位置服務(wù)的主要途徑,但在室內(nèi),由于無法接收到良好的GPS信號,甚至出現(xiàn)GPS信號被屏蔽的現(xiàn)象,導(dǎo)致通過GPS在室內(nèi)無法完成精確定位。

      為了提高室內(nèi)定位的精度和穩(wěn)定性,學(xué)者們提出了多種基于室內(nèi)環(huán)境的定位方法,如基于移動臺的位置估計方法、 基于智能手機內(nèi)部傳感器預(yù)估移動臺移動的定位算法、多模融合算法等?;谝苿优_的位置估計方法在非視距環(huán)境下具有很大的誤差,不適用于復(fù)雜室內(nèi)環(huán)境的定位;基于智能手機內(nèi)部傳感器預(yù)估移動臺移動的方法,在理論上比較新穎,但對于移動臺的移動還是主體的移動當(dāng)前還沒有一個比較好的解決辦法,因此精度不高;多模融合定位算法,是將通過多種定位介質(zhì)得到的定位結(jié)果進(jìn)行融合得出最終定位結(jié)果的定位方法,可以得到較高的定位精度,但需要定位主體具備多種傳感器,不適用于廣泛的位置服務(wù)。[1]

      針對以上所述文獻(xiàn)中方法的缺陷,本文提出了一種基于智能手機GPS/WIFI/藍(lán)牙/圖像的多維級聯(lián)綜合定位方案。此方案相較于傳統(tǒng)的GPS定位,解決了由于室內(nèi)無法接收到良好的GPS信號而導(dǎo)致定位不準(zhǔn)確或失敗的問題。相較于現(xiàn)今人們廣泛使用的高德地圖和百度地圖使用的移動基站+網(wǎng)絡(luò)定位(GSM/2G/3G//4G/WIFI)方案,該方案增加了藍(lán)牙定位和圖像定位,對其做了有益的補充和完善。該系統(tǒng)架構(gòu)簡單,可擴展性強,適用范圍廣,具有廣闊的市場前景。

      1 系統(tǒng)總體設(shè)計

      文中設(shè)計的多維級聯(lián)定位系統(tǒng)主要包括Android客戶端、中央服務(wù)器位置數(shù)據(jù)庫三部分。智能手機或平板終端安裝客戶端App后,就可以通過觸屏和用戶進(jìn)行交互。中央服務(wù)器則負(fù)責(zé)將手機和平板的操作指令進(jìn)行計算與處理,并反饋給使用者處理后的結(jié)果。手機或平板通過WIFI或GSM/3G/4G與服務(wù)器進(jìn)行通信。

      本系統(tǒng)整合智能手機的WIFI功能和藍(lán)牙功能,實現(xiàn)高精度定位與導(dǎo)航服務(wù),與傳統(tǒng)定位相比,本系統(tǒng)具有精度高,可精確定位至樓層甚至門牌號,其硬件設(shè)備簡單,成本較低、系統(tǒng)可靠、易于使用和擴展。

      智能手機或平板電腦通過連接WIFI與Internet建立連接,打開客戶端軟件,選擇相應(yīng)的定位服務(wù)(WIFI定位/藍(lán)牙定位/圖像識別定位/高德定位),客戶端軟件發(fā)送獲取到的周圍WIFI/藍(lán)牙/圖像信息數(shù)據(jù)給中央服務(wù)器,服務(wù)器根據(jù)客戶端傳送過來的原始定位數(shù)據(jù)進(jìn)行綜合定位分析,最后將計算所得位置結(jié)果發(fā)送給手機客戶端完成一次定位服務(wù)。

      2 Android客戶端軟件設(shè)計

      Android客戶端控制系統(tǒng)設(shè)計主要包括用戶界面UI、HTTP通信、SQLite數(shù)據(jù)庫的設(shè)計。Android客戶端由一個或多個Android組件構(gòu)成,組件包括 activities、services、content providers、broadcast receivers 等,每個組件在應(yīng)用程序中完成不同的任務(wù),每個組件可以單獨被激活,或由其他應(yīng)用程序激活。

      2.1 Android 客戶端用戶界面

      Android客戶端主界面分為四個碎片(Fragment)界面,每個Fragment實現(xiàn)一個定位功能,從左至右依次是WIFI定位、藍(lán)牙定位、圖像定位和位置地圖。打開客戶端軟件首先默認(rèn)進(jìn)入WIFI定位Fragment,通過選擇底部Tab導(dǎo)航標(biāo)簽可以進(jìn)入藍(lán)牙定位/圖像定位/位置地圖功能。若使用者未打開Wlan或藍(lán)牙,在進(jìn)入相應(yīng)Fragment時會提示使用者打開上述設(shè)備以繼續(xù)使用定位功能。

      2.2 WIFI定位的實現(xiàn)

      WiFi熱點只要通電,不管它怎么加密的,都一定會向周圍發(fā)射信號。每個WiFi熱點所發(fā)出的無線信號中包含此 WiFi 熱點的唯一全球 ID。即使目標(biāo)距離此WiFi熱點比較遠(yuǎn),目標(biāo)無法與WiFi熱點建立連接,但WiFi熱點還是可以偵聽到它的存在。江蘇電信、江蘇移動、江蘇聯(lián)通等公司鋪設(shè)的位于公共場所的WiFi熱點一般都是很少變位置的,比較固定。[2]

      打開客戶端軟件默認(rèn)進(jìn)入WIFI定位功能界面,若Wlan尚未打開,則提示當(dāng)前Wlan尚未打開。使用者可通過點擊“打開Wlan”按鈕來一鍵打開Wlan。WIFI定位的基本思路是首先通過手機客戶端獲取周圍WIFI熱點的mac地址作為特征識別碼,之前也有某些通過WIFI定位方案使用WIFI熱點的名稱來作為特征識別碼,但此種方式容易遇到無線路由器更改WIFI熱點名稱所帶來的識別碼失效問題。故選用周圍WIFI熱點的mac地址作為特征識別碼比前者更穩(wěn)定,不存在WIFI名稱改變導(dǎo)致特征識別碼失效的問題。第二步是把搜集到的周圍WIFI熱點的mac地址和rssi信號強度以及高德定位所得位置作為原始定位數(shù)據(jù)發(fā)送給中央服務(wù)器,客戶端等待中央服務(wù)器返回地址數(shù)據(jù)。中央服務(wù)器接收到客戶端發(fā)送過來的原始定位數(shù)據(jù)后,首先根據(jù)mac地址進(jìn)入位置數(shù)據(jù)庫(采用Mysql數(shù)據(jù)庫存儲)查詢數(shù)據(jù)庫中是否已有當(dāng)前mac地址對應(yīng)的地址信息,如果有則直接返回地址信息給客戶端;如果沒有地址信息則根據(jù)高德定位所得坐標(biāo)和WIFI的rssi通過距離算法反推WIFI地址并存儲道位置數(shù)據(jù)庫。

      1)將網(wǎng)絡(luò)連接封裝到HttpConnect類中以方便之后復(fù)用

      public class HttpConnect {

      public String httpConnect(String url, String name, String filepath) {

      strBoundary = UUID.randomUUID().toString();

      strChangeLine = "\r\n";strPrefix = "--";try {URL mURL = new URL(url);

      HttpURLConnection mHttpURLConnection = (HttpURLConnection) mURL.openConnection();

      mHttpURLConnection.setRequestMethod("POST");

      mHttpURLConnection.setRequestProperty("Content-Type", "multipart/form-data; boundary=" + strBoundary);

      DataOutputStream mDataOutputStream = new DataOutputStream(mHttpURLConnection.getOutputStream());

      mDataOutputStream.writeBytes(strPrefix + strBoundary + strChangeLine);

      mDataOutputStream.writeBytes("Content-Disposition: form-data; name=\"" + name + "\"; filename=\"" + filepath.substring(filepath.lastIndexOf("/") + 1) + "\"" + strChangeLine);

      mDataOutputStream.writeBytes(strChangeLine);File mFile = new File(filepath);

      FileInputStream mFileInputStream = new FileInputStream(mFile);

      byte[] byt = new byte[1024 * 2];int len;

      while ((len = mFileInputStream.read(byt)) != -1) {mDataOutputStream.write(byt, 0, len);}

      mDataOutputStream.writeBytes(strChangeLine);

      mDataOutputStream.writeBytes(strPrefix + strBoundary + strPrefix + strChangeLine);mDataOutputStream.flush();

      mBufferedReader = new BufferedReader(new InputStreamReader(mHttpURLConnection.getInputStream()));

      mStringBuffer = new StringBuffer();String str;

      while ((str = mBufferedReader.readLine()) != null) {mStringBuffer.append(str);}

      strHttpConnectResult = mStringBuffer.toString();

      Log.d("click", "httpresut:" + strHttpConnectResult);

      mDataOutputStream.close();

      mFileInputStream.close();mBufferedReader.close();

      mHttpURLConnection.disconnect();} catch (Exception e) {e.printStackTrace();

      } return strHttpConnectResult;}

      2)獲取周圍WIFI的mac地址和rssi信號強度

      mWifiManager=(WifiManager)context.getSystemService(Context.WIFI_SERVICE);

      mWifiInfo = mWifiManager.getConnectionInfo();

      mWifiManager.startScan();

      mScanResult = mWifiManager.getScanResults();return mScanResult;

      3)將獲取周圍WIFI的mac地址和rssi信號強度數(shù)據(jù)發(fā)送給中央服務(wù)器

      JSONArray mJsonArraySend = new JSONArray();

      JSONObject mJsonObjectSend;

      for (int i = 0; i < params[0].size(); i++) {mJsonObjectSend = new JSONObject();

      try {mJsonObjectSend.put("mac", params[0].get(i).getMac());} catch (JSONException e) {e.printStackTrace();}try{mJsonObjectSend.put("mdb",params[0].get(i).getMdb());} catch (JSONException e) {e.printStackTrace();}mJsonArraySend.put(mJsonObjectSend);}

      4)獲取中央服務(wù)器返回的位置數(shù)據(jù)

      strHttpConnectResult = HttpConnect.httpConnect("http://127.0.0.1/httptest.php", ("json=" + mJsonArraySend.toString()).getBytes());JSONArray mJsonArrayReceive = null;try {mJsonArrayReceive = new JSONArray(strHttpConnectResult);} catch (JSONException e) {e.printStackTrace();}

      將解析后的數(shù)據(jù)顯示到RecycleView

      for (int i = 0; i < params[0].size(); i++) {for (int k = 0; k < mJsonArrayReceive.length(); k++) {JSONObject mJsonObjectReceive = null;

      try {mJsonObjectReceive = mJsonArrayReceive.getJSONObject(k);} catch (JSONException e) {e.printStackTrace();}if(params[0].get(i).getMac().equals(mJsonObjectReceive.optString("mac"))){params[0].get(i).setAddress(mJsonObjectReceive.optString("address")); params[0].get(i).setDistance(mJsonObjectReceive.optInt("distance"));break;}}}

      mWifiAdapter = new WifiAdapter(getActivity(), list);

      rv_wifi_wifi_location.setAdapter(mWifiAdapter);

      LinearLayoutManager mLinearLayoutManager = new LinearLayoutManager(getActivity(), LinearLayoutManager.VERTICAL, false); rv_wifi_wifi_location.setLayoutManager(mLinearLayoutManager);

      2.3 藍(lán)牙定位的實現(xiàn)

      藍(lán)牙技術(shù)屬于短距離無線通信技術(shù),是利用無線連接把固定及移動的信息設(shè)備構(gòu)成個人局域網(wǎng),從而使得設(shè)備之間低成本無線互連通信的實現(xiàn)[3]。

      藍(lán)牙定位技術(shù)功耗較低,主要應(yīng)用于小范圍定位,精確度為1~3m,有中等的安全性和可靠性。藍(lán)牙設(shè)備體積小,易于集成在PDA、PC及手機中,因此很容易推廣普及。對于持有集成了藍(lán)牙功能移動終端設(shè)備的客戶,只要設(shè)備的藍(lán)牙功能開啟,藍(lán)牙室內(nèi)定位系統(tǒng)就能夠?qū)ζ溥M(jìn)行位置判斷。采用該技術(shù)作室內(nèi)短距離定位時容易發(fā)現(xiàn)設(shè)備且信號傳輸不受視距的影響。相比其他幾種流行的室內(nèi)定位方法,采用低功耗藍(lán)牙4.0標(biāo)準(zhǔn)的室內(nèi)定位方法具有成本低、部署方案簡單、響應(yīng)速度快等技術(shù)特點,加之手機設(shè)備廠商對藍(lán)牙4. 0標(biāo)準(zhǔn)規(guī)范的大力推廣,因而具有更好的發(fā)展前景[4]。

      打開客戶端軟件,選擇底部藍(lán)牙定位Tab進(jìn)入藍(lán)牙定位Fragment,若此時未手機尚未打開藍(lán)牙,則提示使用者打開藍(lán)牙以繼續(xù)使用藍(lán)牙定位服務(wù)。使用者可以點擊“打開藍(lán)牙”按鈕一鍵開啟系統(tǒng)藍(lán)牙功能,打開藍(lán)牙之后客戶端軟件將自動搜索附近藍(lán)牙設(shè)備??蛻舳塑浖⑺阉鞯降母浇{(lán)牙設(shè)備的mac地址作為特征識別碼來標(biāo)識每一臺藍(lán)牙設(shè)備,該設(shè)計相較于其他一些藍(lán)牙類軟件將藍(lán)牙名稱作為特征識別碼避免了藍(lán)牙名稱重復(fù)所帶來的標(biāo)識混亂問題??蛻舳塑浖诤笈_將搜索到的附近藍(lán)牙設(shè)備的mac地址和rssi信號強度進(jìn)行算法分析,最終得出和當(dāng)前智能手機的實際距離并返回數(shù)據(jù)顯示到用戶界面,

      1)新建廣播接收器,獲取周圍藍(lán)牙設(shè)備的mac地址和rssi信號強度

      mBroadcastReceiver = new BroadcastReceiver() {

      public void onReceive(Context context, Intent intent) {mIntent = intent;

      if (intent.getAction().equals(BluetoothDevice.ACTION_FOUND)) {

      BluetoothDevice mBluetoothDeviceNew = intent.getParcelableExtra(BluetoothDevice.EXTRA_DEVICE);

      if (mBluetoothDeviceNew.getBondState() != BluetoothDevice.BOND_BONDED) {

      mBluetoothBean = new BluetoothBean();

      mBluetoothBean.setName(mBluetoothDeviceNew.getName());

      mBluetoothBean.setRssi(intent.getExtras().getString(BluetoothDevice.EXTRA_RSSI));

      mBluetoothBeanList.add(mBluetoothBean);

      mMyBluetoothAdapter.notifyDataSetChanged();}}

      2.4 圖像識別定位的實現(xiàn)

      近幾年,隨著計算機軟硬件與光電傳感器技術(shù)的迅速發(fā)展,圖像處理技術(shù)與機器視覺技術(shù)的應(yīng)用已深入航空航天、農(nóng)業(yè)、軍事、醫(yī)學(xué)等多個領(lǐng)域,在紡織行業(yè)也得到了日益廣泛的應(yīng)用,如檢測纖維混紡比,自動評判織物抗皺性、起毛起球性等級織物結(jié)構(gòu)參數(shù)識別等。其中,基于成像式傳感器的自動檢測方法研究是熱門的課題之一[5]。

      打開客戶端軟件,選擇底部圖像定位Tab進(jìn)入圖像定位Fragment,界面顯示相機取景框,使用者調(diào)整手機位置選取要定位的建筑物,點擊“拍照”將保存圖片數(shù)據(jù)并跳轉(zhuǎn)到圖片預(yù)覽界面,確認(rèn)后點擊“確定”按鈕將圖片發(fā)送到服務(wù)器進(jìn)行圖像識別,客戶端等待服務(wù)器定位結(jié)果。服務(wù)器根據(jù)特征點進(jìn)行圖像識別分析得到圖像特征碼(IFC,Image feature code)。將此圖像特征碼在位置數(shù)據(jù)庫中進(jìn)行位置查詢并返回查詢結(jié)果給手機客戶端,客戶端將結(jié)果顯示到用戶界面。

      1)打開攝像頭,獲取手機客戶端拍照圖片

      Camera.Parameters mCameraParameters = mCamera.getParameters();

      mCameraParameters.setPictureFormat(ImageFormat.JPEG);

      mCameraParameters.setFocusMode(Camera.Parameters.FOCUS_MODE_AUTO

      mCamera.setParameters(mCameraParameters);

      mCamera.takePicture(null, null, mCameraPictureCallback);

      mCameraPictureCallback = new Camera.PictureCallback() {

      public void onPictureTaken(byte[] data, Camera camera) {

      String childDirectoryPath = "Location" + File.separator + "Picture";

      mFileOperate.createChildDirectory(childDirectoryPath);

      File mPictureSaveFile = new File(mFileOperate.mPath + File.separator + childDirectoryPath + File.separator + "temp.jpg");

      Bitmap mBitmapResource = BitmapFactory.decodeByteArray(data, 0, data.length);

      Bitmap mBitmapToSave = BitmapFactory.decodeByteArray(data, 0, data.length);

      Matrix mMatrix = new Matrix();

      mMatrix.setRotate(90, mBitmapResource.getWidth() / 2, mBitmapResource.getHeight() / 2);

      mBitmapToSave = Bitmap.createBitmap(mBitmapResource, 0, 0, mBitmapResource.getWidth(), mBitmapResource.getHeight(), mMatrix, true);

      try {if (mPictureSaveFile.exists()) {mPictureSaveFile.delete();}

      FileOutputStream mFileOutputStream = new FileOutputStream(mPictureSaveFile);

      mBitmapToSave.compress(Bitmap.CompressFormat.JPEG, 50, mFileOutputStream);

      mFileOutputStream.close();} catch (FileNotFoundException e) {

      e.printStackTrace();} catch (IOException e) {e.printStackTrace();}}};

      2)將圖片發(fā)送到中央服務(wù)器進(jìn)行圖像識別

      3)將服務(wù)器返回位置數(shù)據(jù)顯示到用戶界面

      2.5 3D校園重建的實現(xiàn)

      基于3D建模的三維校園重建功能是本系統(tǒng)設(shè)計的最終目標(biāo)。通過利用3D建模技術(shù)將校園的立體結(jié)構(gòu)構(gòu)建出來,如教學(xué)樓、學(xué)生公寓、食堂、圖書館、辦公樓、實驗樓等,每棟建筑的樓層和房間也通過3D建模技術(shù)予以重建,最終構(gòu)建出一個完整的數(shù)字三維立體校園模型。通過使用壓縮算法實現(xiàn)將數(shù)字三維立體校園模型在手機終端予以展示。

      3 結(jié)束語

      將完成的手機應(yīng)用軟件成功安裝, 經(jīng)反復(fù)測試,可以實現(xiàn)與服務(wù)器進(jìn)行交互,資源下載與上傳均可實現(xiàn),可以通過校園微博發(fā)送與接收微博信息,通過校園導(dǎo)航實現(xiàn)校園導(dǎo)航與周邊搜索等。各功能模塊工作正常,耦合度低,符合預(yù)期設(shè)計要求。

      本數(shù)字校園服務(wù)平臺系統(tǒng)兼容當(dāng)前較流行的B/S架構(gòu)——瀏覽器+服務(wù)器,和其他系統(tǒng)架構(gòu)如C/S架構(gòu)相比,優(yōu)勢明顯,實現(xiàn)了跨平臺同等表現(xiàn)。同時,這種方式采用的手機App具有通用性,易于移植,能夠在帶有此類操作系統(tǒng)的智能設(shè)備上安裝和使用,市場價值高,易于推廣,本系統(tǒng)所需硬件簡單易用,穩(wěn)定可靠,大大降低了開發(fā)和維護成本,并具有良好的擴展性。

      參考文獻(xiàn):

      [1] 趙宇,周文剛.基于智能手機的室內(nèi)定位[J].計算機應(yīng)用與軟件,2015(6):91.

      [2] 鈕鑫.Wifi定位的原理及應(yīng)用方向[J].福建電腦,2015(10):136.

      [3] 盧來,龍科.關(guān)于藍(lán)牙室內(nèi)無線定位系統(tǒng)的技術(shù)實現(xiàn)[J].數(shù)字技術(shù)與應(yīng)用,2015(12):70.

      [4] 蘇松,胡引翠,盧光耀,等.低功耗藍(lán)牙手機終端室內(nèi)定位方法[J].測繪通報,2015(12):81-84.

      [5] 黎聰,閆學(xué)娜,曾祥忠,等.應(yīng)用一維傅里葉變換的剖幅區(qū)自動識別與定位[J].紡織學(xué)報,2016(1):148.

      猜你喜歡
      GPS定位
      移動軌跡挖掘算法設(shè)計與系統(tǒng)實現(xiàn)
      一種基于卡爾曼濾波的動態(tài)目標(biāo)GPS定位算法
      开平市| 阿瓦提县| 青阳县| 佛教| 剑河县| 佳木斯市| 琼海市| 澜沧| 闸北区| 宁陵县| 贵阳市| 新竹市| 鱼台县| 陕西省| 丰原市| 凌海市| 密山市| 龙游县| 赤水市| 乃东县| 子洲县| 台南市| 永州市| 广汉市| 封开县| 济阳县| 宿州市| 曲沃县| 太保市| 福贡县| 乡城县| 湖南省| 莱州市| 正镶白旗| 晋城| 尼勒克县| 望谟县| 潜江市| 乌拉特后旗| 金湖县| 呼伦贝尔市|