最近项目需要使用Java实现PC机上的蓝牙通信,整理了一下JavaSE蓝牙开发资料,记录如下。

蓝牙是一种低成本、短距离的无线通信技术,在想要创建个人局域网 (PAN)中很受欢迎,具有成本、功耗低,体积小的优势。

To support development of Bluetooth-enabled software on the Java platform, the Java Community Process (JCP) has defined JSR 82, the Java APIs for Bluetooth Wireless Technology (JABWT).

本文的第 1 部分概述了蓝牙技术和 JABWT,以及典型蓝牙应用程序的用例、活动和元素。 它还介绍了 javax.bluetooth 包中定义的核心 JABWT API。 本文的第二部分将重点介绍 JABWT 的操作方法方面。 代码示例将向您展示如何使用核心蓝牙 API 来初始化蓝牙应用程序、处理连接、设置服务、发现附近的设备和服务、连接到服务以及确保连接安全。

一、蓝牙通信和JABWT

1.1 典型的蓝牙应用用例

典型的蓝牙应用具有三类用例:

  • Initialization - Any Bluetooth-enabled application, server or client, must first initialize the Bluetooth stack.
  • Client - A client consumes remote services. It first discovers any nearby devices, then for each discovered device it searches for services of interest.
  • Server - A server makes services available to clients. It registers them in the Service Discovery Database (SDDB), in effect advertising them. It then waits for incoming connections, accepts them as they come in, and serves the clients that make them. Finally, when the service is no longer needed the application removes it from the SDDB.
  • 1.2典型的蓝牙服务端和客户端

    从图2中看到,客户端和服务器都执行初始化,服务器应用程序准备服务并等待连接,客户端发现设备和服务,然后连接到特定设备以使用特定服务。

    每一对设备之间进行蓝牙通讯时,必须由客户端进行查找,发起配对(有些设备需要输入PIN码),建链成功后,双方即可收发数据。

    蓝牙客户端 ,即是请求连接的一端,搜索会发现可连接的蓝牙设备名称。

    蓝牙服务端 ,提供服务的一端。往往生活中使用到的蓝牙(比如手机是个双重角色),即可做客户端也可以做服务端。

    二、PC平台的Java蓝牙通信开发

    随着智能终端的推广,蓝牙技术被使用的越来越多,Android,IOS等都已封装好了专门的接口供其蓝牙开发,JavaSE中也有一个蓝牙插件,叫BlueCove。

    2.1 蓝牙开发框Bluecove

    BlueCove 实现了JSR-82 Java蓝牙规范,支持的操作系统有: Windows Mobile, Windows XP 和 Windows Vista, Mac OS X。

    BlueCove资源:

    GitHub: https://github.com/ma-ku/bluecove

    BlueCove-2.1.0 的下载地址:https://code.google.com/p/bluecove/downloads/list

    BlueCove的文档:https://code.google.com/p/bluecove/wiki/Documentation

    2.1 开发指南

    Java SE 不包含实现蓝牙功能模块,实现蓝牙功能,我们需要导入第三方的蓝牙bluecove.jar包。BlueCove还需要Apache的commons-io包,因此我们需要同时引入这个包。其中32位系统和64位系统所导的包不同,需要区分。否则会报错。

    如果有更多的需求有以下几个文档可以参考:

    官方API文档: http://snapshot.bluecove.org/

    Java ME 蓝牙:http://www.oracle.com/technetwork/java/javame/tech/index-140411.html

    Java SE + Bluecove Demo

    PS:如果启动报错:bluecove native library version mismatch,可尝试把commons-io包去掉。

    链接:https://pan.baidu.com/s/1tFixZRIRaN4HdlslDlKhuQ

    提取码:rr12

    原文链接:https://blog.csdn.net/weixin_38676276/article/details/111477921

    三、参考资料

    Windows平台JAVA实现蓝牙通讯的方法

    https://www.jianshu.com/p/1575a768fcc6 含客户端、服务端及测试代码 b0

    Eclipse + Java + BlueCove + WIN/MAC 蓝牙开发

    常见为题及解决方法

    1、Win10配对成功后连接蓝牙失败

    解决方法:从配对设备中删除后,重新使用系统蓝牙—扫描—添加,后再尝试连接。

    2、Win10连接成功后,再次连接提示连接异常

    解决方法:未找到关闭连接方法。