簡體   English   中英

如何以編程方式將 2 個 android 設備與藍牙連接?

[英]How to programmatically connect 2 android devices with bluetooth?

我正在開發一個應用程序,它應該自動通過藍牙連接 2 個 Android 設備。 假設它們已經配對。 有可能實現嗎?

當然這是可能的。 我將根據文檔制作一個簡短的教程:

從 BluetoothAdapter 開始 - 它是您的藍牙管理器。

BluetoothAdapter bluetoothAdapter = BluetoothAdapter.getDefaultAdapter();

如果bluetoothAdapter為空,則表示此 Android 設備不支持藍牙(它沒有藍牙無線電。雖然我認為很少遇到這些設備......)

接下來,確保藍牙已開啟:

if (!bluetoothAdapter.isEnabled()) {
      Intent enableBtIntent = new Intent(BluetoothAdapter.ACTION_REQUEST_ENABLE); 
      startActivityForResult(enableBtIntent, request_code_for_enabling_bt);
}

如果它沒有打開,我們將啟動要求用戶啟用它的活動。

假設用戶確實啟用了(我想您應該檢查他是否啟用了,在您的onActivityResult方法中進行)。 我們可以查詢配對的設備:

Set<BluetoothDevice> pairedDevices = bluetoothAdapter.getBondedDevices();

然后遍歷它們: for(BluetoothDevice device : pairedDevices)並找到您要連接的那個。

找到設備后,創建一個套接字來連接它:

BluetoothSocket socket = device.createRfcommSocketToServiceRecord(YOUR_UUID);

YOUR_UUID 是一個包含應用程序特殊 ID 的 UUID 對象。 在這里閱讀。

現在,嘗試連接(您嘗試連接的設備必須在偵聽模式下使用相同的 UUID 創建套接字):

socket.connect();

connect() 會阻塞您的線程,直到建立連接或發生錯誤 - 在這種情況下將引發異常。 所以你應該在一個單獨的線程上調用connect

還有! 您已連接到另一台設備。 現在獲取輸入和輸出流:

InputStream is = socket.getInputStream();
OutputStream os = socket.getOutputStream();

您可以開始發送/接收數據。 請記住,兩個操作(發送和接收)都是阻塞的,因此您應該從不同的線程調用它們。

閱讀有關此內容的更多信息,並在藍牙文檔中了解如何創建服務器(這里我們創建了一個客戶端)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM