最近,该项目需要使用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 对蓝牙应用程序进行初始化,处理连接,设置服务,发现附近的设备和服务,连接到服务,确保连接安全。
1.1.1.蓝牙通信和JABWT 典型的蓝牙应用例图 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.
图2
从图2可以看出,客户端和服务器都是初始化的,服务器应用程序准备服务,等待连接,客户端找到设备和服务,然后连接到特定的设备使用特定的服务。
当每对设备之间进行蓝牙通信时,客户必须搜索并启动配对(部分设备需要输入PIN码)。链条建设成功后,双方可以收发数据。
蓝牙客户端,即请求连接的一端,搜索会发现可连接的蓝牙设备名称。
蓝牙服务端,提供服务的一端。生活中经常使用的蓝牙(比如手机是双重角色)可以是客户端或者服务端。
Java蓝牙通信开发PC平台随着智能终端的推广,蓝牙技术的应用越来越多,Android,IOS等都包装了专门的蓝牙开发界面,JavaSE中还有一个叫BlueCove的蓝牙插件。
2.1 蓝牙开发框BluecoveBlueCove 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还需要apachecommons-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/1tFixZRaN4HdlshDlKhu
提取码:rr12
三、参考Windows平台JAVA实现蓝牙通信的方法https://www.jianshu.com/p/1575a768fcc6 包括客户端、服务端和测试代码 b0
Eclipse + Java + BlueCove + WIN/MAC 蓝牙开发
常见的问题和解决方案
1、Win10配对成功后,蓝牙连接失败
解决方案:从配对设备中删除后,重新使用系统蓝牙扫描添加,然后尝试连接。
2、Win10连接成功后,再次连接提示连接异常
解决方案:未找到关闭连接方法。
本文是转载内容,我们尊重原作者对文章的权利。如有内容错误或侵权行为,请联系我们更正或删除文章。