如何获得蓝牙耳机的电池电量?

时间:2018-10-26 06:36:46

标签: android bluetooth

我正在尝试构建一个获取当前连接的蓝牙耳机电池电量的应用程序。此应用程序可以在没有内置此功能的手机上使用。
在搜索stackoverflow时,我发现了How to get Bluetooth Headset battery status in android这个问题。我使用BluetoothProfile.HEADSET个人资料获得了当前连接的蓝牙耳机。 但是在BluetoothDevice类型的设备对象中,我看不到任何方法或属性来获取蓝牙耳机的电池电量。
我可以获取设备名称和isAudioConnected

4 个答案:

答案 0 :(得分:0)

如果是关于蓝牙HFP功能的问题:HF指示器功能在两侧都是可选的。如果双方都支持,BluetoothHeadset将以BluetoothHeadset.ACTION_HF_INDICATORS_VALUE_CHANGED等于2(电池电量)和BluetoothHeadset.EXTRA_HF_INDICATORS_IND_ID的范围为0..100广播BluetoothHeadset.EXTRA_HF_INDICATORS_IND_VALUE。不记得是实施了Android版本,您应该检查它。

还可以使用特定于供应商的HFP AT命令(尤其是旧的免提设备)以及BLE在设备中实现电池电量。

答案 1 :(得分:0)

首先通过“ android.bluetooth.device.action.BATTERY_LEVEL_CHANGED”注册BroadcastReciver

您可以通过广播接收器接收此操作,然后通过“ android.bluetooth.device.extra.BATTERY_LEVEL”获取额外的数据

如果要触发此操作,则需要重新连接蓝牙设备或蓝牙设备的电池电量发生了变化。

祝你好运。

答案 2 :(得分:0)

使用Android 9将AirPods Pro连接到OnePlus 5T。 这些注册事件均未发生:

{{1}}

答案 3 :(得分:0)

我找到了一个解决方案,但仅适用于android 8及更高版本

我从here那里获取了这段代码

科特林

 fun getBatteryLevel(pairedDevice: BluetoothDevice?): Int {
    return pairedDevice?.let { bluetoothDevice ->
        (bluetoothDevice.javaClass.getMethod("getBatteryLevel"))
            .invoke(pairedDevice) as Int
    } ?: -1
}