国产伦精品免编号公布,亚洲欧美日韩国产成人精品影院,黑人巨大精品欧美一区二区免费,床震吃胸膜奶免费视频

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

發(fā)布於:2023-09-02 16:39:14

不管是基於IOS藍(lán)牙,還是Android 藍(lán)牙,藍(lán)牙開發(fā)的過程都包含下面幾個(gè)重要的步驟:


1.搜索設(shè)備

       設(shè)備搜索是一個(gè)掃描程序,它會(huì)搜索本地附近啟用了藍(lán)牙的設(shè)備,並從這些設(shè)備上獲取一些信息(這個(gè)過程有時(shí)簡(jiǎn)稱為「發(fā)現(xiàn)中」、「查詢中」或者「掃描中」)。然而,在本地區(qū)域範(fàn)圍內(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ì)通過共享一些信息來響應(yīng)搜索發(fā)現(xiàn)的請(qǐng)求,例如設(shè)備名字,設(shè)備類型和它唯一的MAC地址。使用這些信息,執(zhí)行掃描的設(shè)備才能創(chuàng)建一個(gè)連接連接上被發(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è)備:

獲取已配對(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í)獲得。客戶端設(shè)備會(huì)在它打開與服務(wù)端設(shè)備的RFCOMM通道時(shí)獲得。

一種解決方案是自動(dòng)將每一臺(tái)設(shè)備作為服務(wù)端,這樣每一臺(tái)設(shè)備都擁有一個(gè)server socket可以監(jiān)聽連接。之後,每一臺(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ù)流的讀寫操作分派一個(gè)特定的線程。這是非常重要的,因?yàn)閞ead(byte[])和write(byte[])方法都是會(huì)阻塞的方法。read(byte[])方法在從數(shù)據(jù)流中讀取到數(shù)據(jù)之前會(huì)一直阻塞。write(byte[])方法不會(huì)經(jīng)常阻塞,但是在遠(yuǎn)程設(shè)備沒有及時(shí)調(diào)用read(byte[])方法並且中間緩沖區(qū)滿的時(shí)候也會(huì)進(jìn)行阻塞。因此,你的線程中的主循環(huán)應(yīng)該專門用來從InputStream中讀取數(shù)據(jù)。線程中再指定一個(gè)公共方法將數(shù)據(jù)寫入到OutputStream中。

a.獲取讀寫流

tmpIn = socket.getInputStream();

tmpOut = socket.getOutputStream();

b.阻塞方法讀?。?/p>

bytes = mmInStream.read(buffer);

c.發(fā)送消息

mmOutStream.write(buffer);

d.通過handler將文本添加到listview,成為新的消息

mConversationArrayAdapter.add("Me: " + writeMessage);



上一篇:智能硬件智慧路燈APP開發(fā)技術(shù)方案

下一篇:物聯(lián)網(wǎng)APP是什麼

資訊 觀察行業(yè)視覺,用專業(yè)的角度,講出你們的心聲。
MORE

I NEED COOPERATION

我有需要合作

*請(qǐng)認(rèn)真填寫需求信息,我們會(huì)在24小時(shí)內(nèi)與您取得聯(lián)系。