19

我正在做一个 Android 应用程序,我将另一台设备的 MAC 作为字符串(17 个字符长),并且需要使用该 MAC 才能连接到该设备(启动蓝牙连接的线程)。我整个下午都在玩它,不知道该怎么做。问题是它不允许我将 BluetoothDevice 设置为等于字符串。有没有办法可以/必须这样做?

(决定不把我的任何尝试作为代码放在这里,看看它们是如何充满错​​误的)

它必须与另一台运行完全相同的应用程序的平板电脑进行通信。我之前浏览过这个页面,我的大部分应用程序都基于此。我的主要问题是使用 ConnectThread 示例时,

我有一个带有 MAC 地址的字符串,如何连接到该 MAC?

任何帮助将不胜感激,

4

3 回答 3

31

如果我理解正确,你有一个 MAC 地址作为字符串,并且你想连接到设备,对吧?这应该有效:

BluetoothDevice device = mBluetoothAdapter.getRemoteDevice(address);
BluetoothSocket tmp = null;
BluetoothSocket mmSocket = null;

// Get a BluetoothSocket for a connection with the
// given BluetoothDevice
try {
    tmp = device.createRfcommSocketToServiceRecord(MY_UUID);
    Method m = device.getClass().getMethod("createRfcommSocket", new Class[] {int.class});
    tmp = (BluetoothSocket) m.invoke(device, 1);
} catch (IOException e) {
    Log.e(TAG, "create() failed", e);
}
mmSocket = tmp;
于 2013-06-03T22:18:49.340 回答
7

将字符串值转换为蓝牙设备。

BluetoothManager bluetoothManager = (BluetoothManager)getSystemService(Context.BLUETOOTH_SERVICE);
BluetoothDevice mBluetoothDevice = bluetoothManager.getAdapter() .getRemoteDevice("deviceAddress");
于 2018-08-10T05:24:16.007 回答
3

首先,您必须找出蓝牙设备支持的配置文件,例如,它可能是可以使用 HDP 配置文件的医疗设备,也可能是通过蓝牙使用简单的 RS232。在开始编写代码之前,了解如何为各种配置文件建立蓝牙连接非常重要。

这是一个很好的链接。Android SDK 还附带了一些您可以开始使用的基本示例。

http://developer.android.com/guide/topics/connectivity/bluetooth.html

编辑:

如果您的设备配对成功,您将在配对设备列表中看到 MAC 地址。例如,您可以这样做来查找与您设备的 MAC 地址匹配的设备:

  Set<BluetoothDevice> pairedDevices = mBluetoothAdapter
                    .getBondedDevices();
            if (pairedDevices.isEmpty()) {
                Log.e(TAG,
                        "No devices paired...");
                return ;
            }

    for (BluetoothDevice device : pairedDevices) {
                Log.d(TAG, "Device : address : " + device.getAddress() + " name :"
                        + device.getName());
            if (MY_MAC_ADDR.equals(device.getAddress())) {
                mDevice = device;
                break;
            }
    }

希望有帮助。

于 2013-06-03T17:45:23.463 回答