当前位置: 首页 > 知识库问答 >
问题:

使用Java的蓝牙设备的电池电量

郏佐
2023-03-14

我正在尝试构建一个简单的java程序,在windows中显示已连接蓝牙设备的电池状态。参见下面的示例图像。

首先,我从BlueCove开始,意识到BlueCove只提供地址、简单名称等基本信息。。经过进一步调查,发现读取特征的唯一方法是通过BLE GATT服务。因此,我们开始编写一个基于tinyb的测试代码,这是在GitHub Bluetooth manager项目中发现的,它导致了一个异常

到目前为止,我已经尝试过这个代码

import org.sputnikdev.bluetooth.URL;
import org.sputnikdev.bluetooth.manager.CharacteristicGovernor;
import org.sputnikdev.bluetooth.manager.impl.BluetoothManagerBuilder;

import java.io.IOException;
import java.util.concurrent.ExecutionException;

public class B2 {

    public static void main(String[] args) throws IOException, ExecutionException, InterruptedException {

        new BluetoothManagerBuilder()
                .withTinyBTransport(true)
                .withBlueGigaTransport("^*.$")
                .build()
                .getCharacteristicGovernor(new URL("/XX:XX:XX:XX:XX:XX/F7:EC:62:B9:CF:1F/"
                        + "0000180f-0000-1000-8000-00805f9b34fb/00002a19-0000-1000-8000-00805f9b34fb"), true)
                .whenReady(CharacteristicGovernor::read)
                .thenAccept(data -> {
                    System.out.println("Battery level: " + data[0]);
                }).get();

    }
}

专家

<dependencies>
    <dependency>
        <groupId>org.sputnikdev</groupId>
        <artifactId>bluetooth-manager</artifactId>
        <version>1.5.3</version>
    </dependency>
    <dependency>
        <groupId>org.sputnikdev</groupId>
        <artifactId>bluetooth-manager-tinyb</artifactId>
        <version>1.3.3</version>
    </dependency>
</dependencies>

例外

Exception in thread "main" java.lang.IllegalStateException: java.lang.IllegalStateException: Native libraries for TinyB transport could not be loaded.
    at org.sputnikdev.bluetooth.manager.impl.BluetoothManagerBuilder.loadTinyBTransport(BluetoothManagerBuilder.java:225)
    at org.sputnikdev.bluetooth.manager.impl.BluetoothManagerBuilder.build(BluetoothManagerBuilder.java:190)
    at B2.main(B2.java:15)
Caused by: java.lang.IllegalStateException: Native libraries for TinyB transport could not be loaded.
    at org.sputnikdev.bluetooth.manager.impl.BluetoothManagerBuilder.loadTinyBTransport(BluetoothManagerBuilder.java:218)
    ... 2 more

我的问题-

注:

  1. Android和python中有很多可用的例子,但不适用于Java/windows
  2. 还发现未回答的类似C#问题
    获取蓝牙设备电池电量

共有1个答案

红朝
2023-03-14

有两种类型的适配器,每种都有优点和缺点。

>

  • 通用适配器(由TinyB传输支持)。这些是最常见的适配器,很可能你已经有了一个,或者它嵌入了你的电脑/笔记本电脑。然而,有一个主要缺点-它只适用于基于Linux的环境,更准确地说,它需要在操作系统中安装Bluez软件。

    BlueGiga串行适配器(由BlueGiga传输支持)。这是一种非常罕见的特殊类型的蓝牙适配器。其中最常见的是Bluegiga BLED112。选择BlueGiga适配器的主要标准是它必须支持BGAPI。

    注:

    要使用蓝牙管理器tinyb,您必须将Bluez软件升级到5.43。这是由于Bluez 5.43v中DBus API的一些更改。(Bluez 5.44v,Bluez 5.45v,Bluez 5.46v,Bluez 5.47v首选)

    最后一点:

    Windows OS不受TinyB传输的支持。对于Windows操作系统,您需要获得一个BlueGiga适配器。只能在Linux环境中使用英特尔无线适配器。

  •  类似资料:
    • 我正在尝试构建一个应用程序,以获取当前连接的蓝牙耳机的电池电量。此应用程序可以在没有内置此功能的手机上使用 在stackoverflow上搜索时,我发现如何在android中获取蓝牙耳机电池状态这个问题。我使用BluetoothProfile获得了当前连接的蓝牙耳机。耳机情景模式 但是在BluetoothDevice类型的device对象中,我看不到任何获取蓝牙耳机电池电量的方法或属性 我可以获取

    • 出于某种原因,在我通过蓝牙将平板电脑与其他设备连接后,我的日志消息似乎不会出现。我创建了一条日志消息,上面写着log。d(标签,“创建时”),我在我的日志中看到了这一点,但当我将平板电脑与设备连接时,这一点突然从日志中消失,之后放置的消息根本不会出现(通过敬酒来验证)。这是蓝牙的问题还是我还缺少什么?

    • 本文向大家介绍蓝牙无线电层,包括了蓝牙无线电层的使用技巧和注意事项,需要的朋友参考一下 下图所示的无线电层的位置- 蓝牙无线电层的特征 蓝牙无线电层规定了使用蓝牙技术进行通信的蓝牙收发器设备的要求。 它定义了空中接口,频带,跳频规范和调制技术。 该层负责将数据位从主设备移至从设备,反之亦然。 这是一种工作在10米范围内的低功率系统。 它与IEEE 802.11网络或WiFi一样,在未经许可的2.4

    • 问题内容: 我正在寻找一种以编程方式列出我的设备所找到的附近任何蓝牙设备(可发现)的方法。我无法找到有关在Swift3.0中执行此调用的任何信息或教程。这篇QA帖子讨论了使用Swift 1.0查找这些设备并在Xcode 6(而不是最新版本8)中进行构建。 我尽力将代码从1.0转换为3.0语法,但是在运行以下代码时,Playground不返回任何内容: 问题答案: 正确使用IOBluetooth 下

    • deviceName String deviceId String

    • deviceName String 设备名称 deviceId String 设备Id BluetoothDevice Object deviceName String deviceId String