连接到String上具有蓝牙地址的设备

时间:2013-06-03 17:33:24

标签: android string sockets bluetooth

我正在做一个Android应用程序,其中我将另一个设备的MAC作为字符串(长度为17个字符),并且需要使用那个以连接到该设备(启动蓝牙连接的线程)。 我整个下午一直在玩它,无法弄清楚如何做到这一点。问题是它不允许我将BluetoothDevice设置为等于字符串。 有没有办法可以/必须这样做?

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

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

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

任何帮助都将受到高度赞赏,

3 个答案:

答案 0 :(得分:28)

如果我理解正确,你有一个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;

这是这个简单的开源Android应用程序源代码的摘录: https://github.com/janosgyerik/bluetoothviewer

该应用程序是一个用于调试蓝牙连接和原始协议数据的简单工具。 (目前仅在ascii中,我计划添加调试十六进制的功能。)

答案 1 :(得分: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;
            }
    }

希望有所帮助。

答案 2 :(得分:2)

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

BluetoothManager bluetoothManager = (BluetoothManager)getSystemService(Context.BLUETOOTH_SERVICE);
BluetoothDevice mBluetoothDevice = bluetoothManager.getAdapter() .getRemoteDevice("deviceAddress");