2012-12-17 180 views
4

我在做基於藍牙的應用程序,我想連接其他設備,如諾基亞設備和打印機。Android藍牙連接另一個藍牙設備

我參考了android藍牙文檔http://developer.android.com/guide/topics/connectivity/bluetooth.html。它演示了所有基本的藍牙API功能,並且我做了所有這些事情。我從BluetoothChat獲得了Android的示例的引用。

BluetoothChat This application send data to another android device but for that this application must be installed in both the devices. 

喜歡這個How to send file from Android device to other device through Bluetooth by code

我想是

  1. 我想從一個設備從我的應用程序發送文件到另一臺設備,並且也適用不運行我們的應用程序甚至其他設備。即Receiver設備也能夠使用默認藍牙接收文件。

這是可能的android?

回答

0

我認爲這是不可能的。

其實,當你創建一個藍牙套接字,你必須使用createRfcommSocketToServiceRecord(UUID)

此功能需要一個UUID是兩個設備上的應用程序之間共享,因此可以建立連接字符串。

如果沒有藍牙套接字在另一臺設備上偵聽,使用完全相同的UUID,您將無法共享數據。

+0

感謝您的回覆,我想明確的是,有沒有辦法通過我的應用程序中的編碼到藍牙設備連接?或者有任何解決方法? –

0

您可以輕鬆地在兩臺BT設備之間進行連接。 你只需要調用

createRfcommSocketToServiceRecord(UUID) 

與UUID說明白接收器設備。 對於文件傳輸操作UUID必須是(例如)等於00001106-0000-1000-8000-00805F9B34FB(文件傳輸服務)

所以你的連接代碼可能看起來像下面

BluetoothDevice類設備= mBluetoothAdapter代碼。 getRemoteDevice( 「00:0A:94:16:77:A0」); BluetoothSocket clientSocket;

try { 
    log(TAG, "Remote device " + device); 
    ParcelUuid[] uuids = device.getUuids(); 
    boolean isFileTransferSupported = false; 
    UUID ftpUID = UUID.fromString("00001106-0000-1000-8000-00805F9B34FB"); 
    // Check if remote device supports file transfer 
    for (ParcelUuid parcelUuid: uuids) { 
     if (parcelUuid.getUuid().equals(ftpUID)) { 
      isFileTransferSupported = true; 
      break; 
     } 
    } 
    if (!isFileTransferSupported) { 
     log(TAG, "Remote bluetooth device does not supports file transfer "); 
     return; 
    } 
    clientSocket = device.createRfcommSocketToServiceRecord(ftpUID); 
    clientSocket.connect(); 
} catch (IOException e) { 
    return; 
} 
+0

嘿你找到了解決方案? – abhishek