android 蓝牙模块连接

时间:2020-12-14 22:25:27


假设你已经做好android蓝牙模块的准备工作,既已经搜索到附近其他的蓝牙设备,在尝试进行连接时会出现失败,报错。在这分享下我的心得

首先我使用了两种连接方式,我发现这两种方式分别适合于不同场景,不能交换使用场景

方式一

try {
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进行请求配对,这种方式适合于两个手机直接进行连接。

当我们通过代码创建蓝牙服务端时,上述方式并不能连接成功,就要用到

方式二:

 socket = device.createRfcommSocketToServiceRecord(UUID.fromString("服务端的UUID"));

当使用蓝牙模块外设时,我还没有测试,刚买它还在路上,根据上述描述,简单尝试即可。