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