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

我从 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. 我想从我的应用程序将文件从一台设备发送到另一台设备,即使另一台没有运行我们的应用程序的设备也能正常工作。即接收设备也能够使用默认蓝牙接收文件。

这在android中可能吗?

4

2 回答 2

0

我认为这是不可能的。

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

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

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

于 2012-12-17T12:07:13.973 回答
0

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

createRfcommSocketToServiceRecord(UUID)

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

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

BluetoothDevice 设备 = mBluetoothAdapter.getRemoteDevice("00:0A:94:16:77:A0"); BluetoothSocket 客户端Socket;

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;
}
于 2013-06-21T14:37:48.370 回答