成人无码A区在线观看视频,久久国产青偷人人妻潘金莲,任我爽橹在线精品视频,国产专区免费资源网站

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

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

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


1.搜索設(shè)備

       設(shè)備搜索是一個掃描程序,它會搜索本地附近啟用了藍牙的設(shè)備,並從這些設(shè)備上獲取一些信息(這個過程有時簡稱為「發(fā)現(xiàn)中」、「查詢中」或者「掃描中」)。然而,在本地區(qū)域範圍內(nèi)的藍牙設(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è)備。

通過藍牙設(shè)備搜索的代碼

a.獲取適配器:mBluetoothAdapter = BluetoothAdapter.getDefaultAdapter();

b.打開適配器:Intent enableIntent = new Intent(BluetoothAdapter.ACTION_REQUEST_ENABLE);

startActivityForResult(enableIntent, REQUEST_ENABLE_BT);

c.搜索藍牙設(shè)備:

獲取已配對設(shè)備:Set>BluetoothDevice< pairedDevices = mBtAdapter.getBondedDevices();

搜索周邊設(shè)備:mBtAdapter.startDiscovery();

BluetoothDevice.ACTION_FOUND找到一個;

BluetoothAdapter.ACTION_DISCOVERY_FINISHED搜索結(jié)束。

 

2.連接到藍牙ConnectThread:

       服務(wù)端設(shè)備和客戶端設(shè)備獲取BluetoothSocket的方法不同。服務(wù)端設(shè)備將會在接受一個傳入的連接請求時獲得??蛻舳嗽O(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ù)流的讀寫操作分派一個特定的線程。這是非常重要的,因為read(byte[])和write(byte[])方法都是會阻塞的方法。read(byte[])方法在從數(shù)據(jù)流中讀取到數(shù)據(jù)之前會一直阻塞。write(byte[])方法不會經(jīng)常阻塞,但是在遠程設(shè)備沒有及時調(diào)用read(byte[])方法並且中間緩沖區(qū)滿的時候也會進行阻塞。因此,你的線程中的主循環(huán)應(yīng)該專門用來從InputStream中讀取數(shù)據(jù)。線程中再指定一個公共方法將數(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

我有需要合作

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