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

时间:2012-12-17 11:30:00

标签: java android bluetooth

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

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

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.

喜欢这个How to send file from Android device to other device through Bluetooth by code

我想要的是

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

2 个答案:

答案 0 :(得分:0)

我认为这是不可能的。

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

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

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

答案 1 :(得分:0)

您可以轻松地在两个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;
}