假设你已经做好android蓝牙模块的准备工作,既已经搜索到附近其他的蓝牙设备,在尝试进行连接时会出现失败,报错。在这分享下我的心得
首先我使用了两种连接方式,我发现这两种方式分别适合于不同场景,不能交换使用场景
方式一
try {通过反射机制拿到socket进行请求配对,这种方式适合于两个手机直接进行连接。
Method m = device.getClass().getMethod("createRfcommSocket", new Class[]{int.class});
try {
socket = (BluetoothSocket) m.invoke(device, 1);
try {
socket.connect();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
} catch (IllegalArgumentException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IllegalAccessException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (InvocationTargetException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
} catch (SecurityException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (NoSuchMethodException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
当我们通过代码创建蓝牙服务端时,上述方式并不能连接成功,就要用到
方式二:
socket = device.createRfcommSocketToServiceRecord(UUID.fromString("服务端的UUID"));
当使用蓝牙模块外设时,我还没有测试,刚买它还在路上,根据上述描述,简单尝试即可。