无码H版动漫在线观看_国产成人91国精品_国产三级在线播放第一页_色综合久久久久综合体桃花网_亚洲中文字幕1235

歡迎來(lái)到深圳市來(lái)科信科技有限公司網(wǎng)站!

已閱讀

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

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