开题感想
首先对于在新公司工作一年多的人来说,在目送人走人来的情况下,自己已逐渐成为一位所谓的“老员工”,感慨时光易逝啊。而自己所负责的主要是蓝牙通信的sdk的撰写,下面对蓝牙sdk连接的一些问题做简单的介绍。
Android sdk连接蓝牙
我们公司主要负责的是pos设备与蓝牙的通信连接,所以就简单的介绍我自己写代码时的一些收获和碰到的坑。
1.蓝牙连接分为有先配对再连接和不配对直接连接的。(很多人认为配对即是连接,类似手机蓝牙系统中点击配对后,就可以传送东西,其实不对),配对和连接是两回事。
2.介绍下用代码配对再连接蓝牙的。
配对的简单代码如下:
BluetoothDevice.class.getMethod("createBond", (Class[]) null)
.invoke(device, new Object[0]);
配对之后,我们接下来开始需要连接
连接之前,我们要考虑连接蓝牙的过程是一个耗费时效的过程,要有一定的时间去连接,所以需要开启一个新线程去连接蓝牙,
创建线程之后,建立BluetoothSocket socket=serverDevice.createRfcommSocketToServiceRecord(CUSTOM_UUID);
其中serverDevice是服务器设备BluetoothDevice对象。谨记一点,其中这个socket的创建赋值,有时候不同版本的手机需要进行适配,除了createRfcommSocketToServiceRecord这个建立方法,还有createInsecureRfcommSocketToServiceRecord要实事而定。
其中最重要的是CUSTOM_UUID,一定是要与设备建立正确uuid。每个设备都有自己独特的uuid,要根据实际情况具体修改。
创建完socket之后,我们可以直接调用系统的方法socket.connect();去连接蓝牙即可。
最后需要通信的话,直接调用socket.getOutputStream();socket.getInputStream()去得到输入流和输出流,用这些流去write和read数据。
出现socket.connect连接异常的问题解决
除了网上大部分博客上出现这些问题时的解决办法,其实对我而言用处不大,因为这个是需要根据手机以及设备来进行判断的。
1.一般会出现这种情况是手机蓝牙的配对问题,有的手机是必须要进行配对才能去连接的,这个时候你就要直接用代码去先进行配对,然后连接即可。
2.有的手机可能是需要不配对连接,但是一些版本的手机会弹出系统狂要求配对,你点击后配对就无法再进行连接,所以这个时候需要你去用代码取消配对,下面是取消代码配对的简单示例:
BluetoothDevice.class.getMethod("removeBond", (Class[]) null)
.invoke(device, new Object[0]);
所以配对和连接是两个概念,一定要理清这个状况再去解决连接问题。而且大部分都是代码可以解决的问题。
总结
最后总结一句:实践出真知,还是要多练习,才能找到问题的最佳解决方法。