91精彩视频在线观看_国产强伦姧在线观看无码_欧美国产日韩综合在线_国产精品莉莉欧美自在线线

歡迎來到深圳市來科信科技有限公司網(wǎng)站!
您當(dāng)前的位置:深圳APP開發(fā) > 新聞資訊 > APP開發(fā)資訊 >

已閱讀

藍(lán)牙開發(fā)的幾個重要步驟

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