美文网首页Android技术知识
android连接蓝牙以及相关问题

android连接蓝牙以及相关问题

作者: zakshs | 来源:发表于2017-09-20 14:32 被阅读0次

    开题感想

    首先对于在新公司工作一年多的人来说,在目送人走人来的情况下,自己已逐渐成为一位所谓的“老员工”,感慨时光易逝啊。而自己所负责的主要是蓝牙通信的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]);

    所以配对和连接是两个概念,一定要理清这个状况再去解决连接问题。而且大部分都是代码可以解决的问题。

    总结

    最后总结一句:实践出真知,还是要多练习,才能找到问题的最佳解决方法。

    相关文章

      网友评论

        本文标题:android连接蓝牙以及相关问题

        本文链接:https://www.haomeiwen.com/subject/zncosxtx.html