2011-07-03 155 views
5

我花了一些時間研究Android與藍牙設備通信的能力,藍牙設備旨在通過PC上的藍牙COM端口進行通信。我一直無法找到明確的答案,所以我想我會在這裏問。我想確保這可能與Android。Android藍牙COM端口

我是藍牙通信的新手,但迄今爲止我所做的研究讓我感到RFCOMM有點像我想要的。不幸的是,我仍然無法證實這實際上是可能的。

任何幫助/資源將不勝感激。

+0

它是如何設計,以通過藍牙串口通信? com端口在PC上,我假設的藍牙設備不是,而是連接到PC。 –

+0

所以我並不完全確定,藍牙設備的指示說要通過藍牙COM端口進行配對。有什麼具體的我應該尋找?就像我說的,仍然試圖圍繞這個東西包裹我的頭。 –

+0

只要嘗試編寫代碼來配對設備,看看會發生什麼。 –

回答

11

是的,Android可以連接到PC上的藍牙COM端口。我目前正在開發這樣的應用程序。下面是一個代碼示例(ITE需要藍牙權限TE在Manifest.xml文件中設置):

<uses-permission android:name="android.permission.BLUETOOTH" /> 

的Java:

BluetoothAdapter adapter = BluetoothAdapter.getDefaultAdapter(); 
if (adapter == null) { 
    // Device does not support Bluetooth 
    finish(); //exit 
} 

if (!adapter.isEnabled()) { 
//make sure the device's bluetooth is enabled 
    Intent enableBluetooth = new Intent(BluetoothAdapter.ACTION_REQUEST_ENABLE); 
    startActivityForResult(enableBluetooth, REQUEST_ENABLE_BT); 
} 

final UUID SERIAL_UUID = UUID.fromString("00001101-0000-1000-8000-00805F9B34FB"); //UUID for serial connection 
mac = "00:15:83:3D:0A:57"; //my laptop's mac adress 
device = adapter.getRemoteDevice(mac); //get remote device by mac, we assume these two devices are already paired 


// Get a BluetoothSocket to connect with the given BluetoothDevice 
BluetoothSocket socket = null; 
OutputStream out = null; 
try { 
    socket = device.createRfcommSocketToServiceRecord(SERIAL_UUID); 
} catch (IOException e) {} 

try {   
    socket.connect(); 
    out = socket.getOutputStream(); 
    //now you can use out to send output via out.write 
} catch (IOException e) {} 
+0

如果我需要處理使用BluetoothSocket在套接字上讀/寫的超時,那麼該怎麼辦?我正在開發一個使用您的方法進行連接的Android應用程序,但我仍然無法處理時間,這非常重要,因爲我的遠程藍牙設備有點特別。 – Sonhja

+0

我曾經自己做過,但這裏描述的方法可能有所幫助:http://developer.android.com/reference/android/bluetooth/BluetoothDevice.html和http://developer.android.com/reference/android/bluetooth/ BluetoothSocket.html#isConnected() – Konsalik

+0

我試過你的代碼,但我有這個異常調用連接: java.io.IOException:讀取失敗,套接字可能關閉或超時,在android.bluetooth.BluetoothSocket讀取ret:-1。 readAll(BluetoothSocket.java:637) – devmao