[英]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.