Android蓝牙连接另一个蓝牙设备

我正在做基于蓝牙的应用程序,我想连接其他设备,如诺基亚设备和打印机。

我参考了android蓝牙文档http://developer.android.com/guide/topics/connectivity/bluetooth.html 。 它演示了所有基本的蓝牙APIfunction,而且我做了所有这些

Scanning for other Bluetooth devices Querying the local Bluetooth adapter for paired Bluetooth devices Establishing RFCOMM channels/sockets Connecting to a remote device Transfering data over Bluetooth 

我从BluetoothChat,android的样本中获得参考。

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

像这样如何通过代码将文件从Android设备发送到其他设备

我想要的是

  1. 我想从我的应用程序将文件从一个设备发送到另一个设备,这也适用于另一个没有运行我们的应用程序的设备。 即Receiver设备也能够使用默认蓝牙接收文件。

这在Android中是否可行?

我认为这是不可能的。

实际上,当你创建一个蓝牙套接字时,你必须使用createRfcommSocketToServiceRecord(UUID)

此函数需要一个UUID,它是两个设备上的应用程序之间共享的字符串,因此可以建立连接。

如果没有蓝牙套接字监听其他设备,使用完全相同的UUID,您将无法共享数据。

您可以轻松地在两个BT设备之间建立连接。 你只需要打电话

 createRfcommSocketToServiceRecord(UUID) 

使用了解接收器设备的UUID。 对于文件传输操作,UUID必须等于(例如)00001106-0000-1000-8000-00805F9B34FB(文件传输服务)

所以你的连接代码可能看起来像下面的代码

BluetoothDevice device = 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; }