在开发有关Android的蓝牙SPP服务时,发现了一点问题,需要注意的是,在连接SPP服务的时候,有可能直接调用connect会出现Exception的问题,因此,对于SPP的服务应当有两种实现比较保险,SPP的服务特征码(UUID):
00001101-0000-1000-8000-00805F9B34FB
贴出我对于连接SPP的实现,做个记录以供以后使用:
public void connect(String address, Callback.ConnectCallback callback) {
try {
//在连接某个设备时务必检测并且关闭蓝牙设备搜索,否则会使连接过久甚至失败
cancelDiscovery();
BluetoothDevice tmpDev = btAdapter.getRemoteDevice(address);
Method m = tmpDev.getClass().
getMethod("createRfcommSocket", int.class);
btSocket = (BluetoothSocket) m.invoke(tmpDev, 1);
btSocket.connect();
} catch (IOException ioe) {
callback.onFail();
callback.onError("出现异常: " + ioe);
} catch (NoSuchMethodException e) {
e.printStackTrace();
} catch (IllegalAccessException e) {
e.printStackTrace();
} catch (InvocationTargetException e) {
e.printStackTrace();
}
}
其他的无关代码可以忽略!
学无止境,应当沉下心来慢慢思考,戒骄戒躁,闷声发大财!