安卓蓝牙连接其他蓝牙设备

4
我正在开发基于蓝牙的应用程序,我想连接其他设备,比如诺基亚设备和打印机。
我参考了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

我从Android的BluetoothChat示例中获取了参考资料。
BluetoothChat This application send data to another android device but for that this application must be installed in both the devices.

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

我的要求是

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

在Android中是否可能实现此功能?

2个回答

0

您可以轻松地在两个蓝牙设备之间建立连接。 您只需要调用

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;
}

嘿,你找到这个问题的解决方案了吗? - abhishek

0

我认为这是不可能的。

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

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

如果另一台设备上没有监听具有完全相同UUID的蓝牙套接字,则无法共享数据。


谢谢您的回复,我想要明确一下,在我的应用程序中没有办法通过编码来连接蓝牙设备吗?或者有任何变通方法吗? - kumar_android

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接