diannao 发表于 2025-2-7 00:01:55

Java Bluetooth 蓝牙通讯 BlueCove 扫描附近的蓝牙设备

目录

[*]BlueCove项目概述

[*]BlueCove API架构

[*]API的设计原则和实现方式
[*]关键类和方法的功能描述


[*]测试代码

[*]获取本机(PC)蓝牙
[*]扫描蓝牙



没啥大的意思,就是了解一下。下一步,用微信小程序尝试一下
BlueCove项目概述

BlueCove是一个开源的蓝牙协议栈实现,旨在为Java开发者提供一个全面的、易于使用的API,从而在应用程序中实现蓝牙功能。该项目支持多种操作系统,包括Windows、Linux和Mac OS X,并且能够与多种蓝牙硬件设备兼容。
BlueCove项目对这些协议的广泛支持,使得开发人员能够为不同类型的蓝牙设备开发应用程序,而不必担心兼容性问题。
BlueCove API架构

API的设计原则和实现方式

BlueCove API是一套Java语言的开源蓝牙API实现,它为Java应用提供了访问蓝牙设备和进行蓝牙通信的能力。API的设计遵循了Java的设备无关性原则,提供了一套统一的编程接口,使得开发者可以在不关心具体蓝牙硬件实现的情况下,编写跨平台的蓝牙应用。
API的实现主要依赖于底层的蓝牙硬件抽象层(HAL)来与蓝牙硬件进行交互。BlueCove使用Java本地接口(JNI)技术与底层操作系统以及蓝牙硬件进行通信。通过这种方式,BlueCove能够运行在支持JNI的多种平台上。
关键类和方法的功能描述

在BlueCove API中,有一些关键的类和方法需要特别注意。例如, BluetoothAdapter 类提供了访问蓝牙适配器(即蓝牙硬件)的方法。通过这个类,可以进行设备发现、获取已配对的设备列表、管理设备配对等操作。
另一个重要的类是 BluetoothDevice ,它代表一个远程蓝牙设备。这个类允许应用程序查询设备信息、发起连接、以及与远程设备进行数据通信。
此外, BluetoothSocket 类则是用于建立数据连接的。它使得通过蓝牙网络套接字进行数据传输成为可能。开发者可以通过这个类的实例来进行数据发送和接收,实现应用程序之间的数据交换。
测试代码

获取本机(PC)蓝牙

添加引用
<dependency>    <groupId>io.ultreia</groupId>    <artifactId>bluecove</artifactId>    <version>2.1.1</version></dependency>打印PC蓝牙名称
import javax.bluetooth.*; public class BlueCoveTest {    public static void main(String[] args) {      LocalDevice localDevice = LocalDevice.getLocalDevice();      System.out.println("Local Device Name: " + localDevice.getFriendlyName());    }}
扫描蓝牙


[*]DiscoveryAgent.GIAC:一般的不受限的发现模式;
[*]DiscoveryAgent.LIAC:受限的发现模式,具体情况取决于API的具体实现;
[*]DiscoveryAgent.NOT_DISCOVERABLE:不可被发现。
package com.vipsoft.boot;import javax.bluetooth.*;import java.io.IOException;public class BleDiscoverDevices {    final static Object inquiryCompletedEvent = new Object();    public static void main(String[] args) {      try {            synchronized (inquiryCompletedEvent) {                // 获取本地蓝牙设备                LocalDevice localDevice = LocalDevice.getLocalDevice();                // 获取蓝牙设备管理器                DiscoveryAgent agent = localDevice.getDiscoveryAgent();                // 设置设备发现监听器                DeviceDiscoveryListener listener = new DeviceDiscoveryListener();                // 开始发现附近的蓝牙设备                boolean started = agent.startInquiry(DiscoveryAgent.GIAC, listener);                if (started) {                  System.out.println("开始搜索...");                  inquiryCompletedEvent.wait();                  agent.cancelInquiry(listener);                }            }      } catch (Exception e) {            e.printStackTrace();      }    }    public static class DeviceDiscoveryListener implements DiscoveryListener {      @Override      public void deviceDiscovered(RemoteDevice remoteDevice, DeviceClass deviceClass) {            try {                String deviceName = remoteDevice.getFriendlyName(false);                String address = remoteDevice.getBluetoothAddress();                System.out.println("发现蓝牙设备 Address: " + address + " Device: " + deviceName);            } catch (IOException e) {                e.printStackTrace();            }      }      @Override      public void servicesDiscovered(int i, ServiceRecord[] serviceRecords) {            for (ServiceRecord record : serviceRecords) {                System.out.println("Service discovered: " + record.getConnectionURL(ServiceRecord.NOAUTHENTICATE_NOENCRYPT, false));            }      }      @Override      public void serviceSearchCompleted(int i, int i1) {            System.out.println("Service search completed");      }      @Override      public void inquiryCompleted(int i) {            System.out.println("搜索完成");            synchronized (inquiryCompletedEvent) {                inquiryCompletedEvent.notifyAll();            }      }    }}
源码:https://gitee.com/VipSoft/VipBoot/tree/develop/vipsoft-bluetooth
页: [1]
查看完整版本: Java Bluetooth 蓝牙通讯 BlueCove 扫描附近的蓝牙设备