我正在做一个Android应用程序,其中我将另一个设备的MAC作为字符串(长度为17个字符),并且需要使用那个以连接到该设备(启动蓝牙连接的线程)。 我整个下午一直在玩它,无法弄清楚如何做到这一点。问题是它不允许我将BluetoothDevice设置为等于字符串。 有没有办法可以/必须这样做?
(决定不把我的任何尝试作为代码,看看它们是如何充满错误的)
它必须与运行完全相同的应用程序的另一台平板电脑进行通信。我之前浏览过this页面,我的大多数应用都基于此。我的主要问题是使用ConnectThread示例时
我有一个包含MAC地址的字符串,如何连接到该MAC?
任何帮助都将受到高度赞赏,
答案 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");