歡迎來(lái)到深圳市志博科技有限公司網站!
您當前的(de)位置:深圳APP開發 > 新聞資訊 > APP開發資訊 >
人(rén)
已閱讀

藍牙開發的(de)幾個(gè)重要步驟

來(lái)源:lexintech.com       發布時(shí)間:2019-10-15
     不管是基于IOS藍牙,還(hái)是Android 藍牙,藍牙開發的(de)過程都包含下(xià)面幾個(gè)重要的(de)步驟:
1.搜索設備
       設備搜索是一個(gè)掃描程序,它會搜索本地附近啓用(yòng)了(le)藍牙的(de)設備,并從這(zhè)些設備上獲取一些信息(這(zhè)個(gè)過程有時(shí)簡稱爲“發現中”、“查詢中”或者“掃描中”)。然而,在本地區(qū)域範圍内的(de)藍牙設備隻有在它是允許被發現的(de)模式下(xià)才會響應其它設備掃描發現的(de)請求。如果一個(gè)設備是可(kě)被發現的(de)狀态模式,它會通(tōng)過共享一些信息來(lái)響應搜索發現的(de)請求,例如設備名字,設備類型和(hé)它唯一的(de)MAC地址。使用(yòng)這(zhè)些信息,執行掃描的(de)設備才能創建一個(gè)連接連接上被發現的(de)設備。
通(tōng)過藍牙設備搜索的(de)代碼
a.獲取适配器:mBluetoothAdapter = BluetoothAdapter.getDefaultAdapter();
b.打開适配器:Intent enableIntent = new Intent(BluetoothAdapter.ACTION_REQUEST_ENABLE);
startActivityForResult(enableIntent, REQUEST_ENABLE_BT);
c.搜索藍牙設備:
獲取已配對(duì)設備:Set>BluetoothDevice< pairedDevices = mBtAdapter.getBondedDevices();
搜索周邊設備:mBtAdapter.startDiscovery();
BluetoothDevice.ACTION_FOUND找到一個(gè);
BluetoothAdapter.ACTION_DISCOVERY_FINISHED搜索結束。
 
2.連接到藍牙ConnectThread:
       服務端設備和(hé)客戶端設備獲取BluetoothSocket的(de)方法不同。服務端設備将會在接受一個(gè)傳入的(de)連接請求時(shí)獲得(de)。客戶端設備會在它打開與服務端設備的(de)RFCOMM通(tōng)道時(shí)獲得(de)。
一種解決方案是自動将每一台設備作爲服務端,這(zhè)樣每一台設備都擁有一個(gè)server socket可(kě)以監聽(tīng)連接。之後,每一台設備都可(kě)以啓動一個(gè)與其它設備的(de)連接并變成客戶端設備。另外,也(yě)可(kě)以明(míng)确一台設備作爲服務端根據需要啓動一個(gè)server socket,其它設備隻要簡單的(de)建立連接。
a.根據地址獲取設備:
BluetoothDevice device = mBluetoothAdapter.getRemoteDevice(address);
b.獲取設備soceket:
device.createRfcommSocketToServiceRecord(MY_UUID_SECURE);
c.取消掃描設備,連接soceket:端口:
mAdapter.cancelDiscovery();
mmSocket.connect();
 
3.數據信息交互ConnectedThread:
       首先,你需要爲所有數據流的(de)讀寫操作分(fēn)派一個(gè)特定的(de)線程。這(zhè)是非常重要的(de),因爲read(byte[])和(hé)write(byte[])方法都是會阻塞的(de)方法。read(byte[])方法在從數據流中讀取到數據之前會一直阻塞。write(byte[])方法不會經常阻塞,但是在遠(yuǎn)程設備沒有及時(shí)調用(yòng)read(byte[])方法并且中間緩沖區(qū)滿的(de)時(shí)候也(yě)會進行阻塞。因此,你的(de)線程中的(de)主循環應該專門用(yòng)來(lái)從InputStream中讀取數據。線程中再指定一個(gè)公共方法将數據寫入到OutputStream中。
a.獲取讀寫流
tmpIn = socket.getInputStream();
tmpOut = socket.getOutputStream();
b.阻塞方法讀取:
bytes = mmInStream.read(buffer);
c.發送消息
mmOutStream.write(buffer);
d.通(tōng)過handler将文本添加到listview,成爲新的(de)消息
mConversationArrayAdapter.add("Me: " + writeMessage);
APP開發 網站開發 産品設計 微信公衆号 APP開發公司 用(yòng)戶體驗 APP運營 微信小程序 産品經理(lǐ) 網站設計