【问题标题】:How to get Bluetooth Headset battery level?如何获取蓝牙耳机电量?
【发布时间】:2019-03-30 20:46:09
【问题描述】:

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

【问题讨论】:

标签: android bluetooth battery batterylevel


【解决方案1】:

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

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

【讨论】:

    【解决方案2】:

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

    我从here获取此代码

    科特林

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

    【讨论】:

      【解决方案3】:

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

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

      如果你想触发这个动作,你需要重新连接你的蓝牙设备或蓝牙设备的电池电量发生了变化。

      祝你好运。

      【讨论】:

        【解决方案4】:

        将 AirPods Pro 连接到装有 Android 9 的 OnePlus 5T。 这些注册的事件都没有发生:

        "android.bluetooth.device.action.BATTERY_LEVEL_CHANGED"
        "android.bluetooth.headset.profile.action.AUDIO_STATE_CHANGED"
        "android.bluetooth.headset.action.HF_INDICATORS_VALUE_CHANGED"
        

        【讨论】:

          猜你喜欢
          • 2015-11-30
          • 2019-06-07
          • 1970-01-01
          • 2020-10-14
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多