蓝牙配置文件

Bluetooth API 支持使用蓝牙配置文件。答 蓝牙配置文件是蓝牙的无线接口规范 例如免提配置文件对于移动设备 连接到无线耳机时,这两部设备都必须支持 免触摸操作配置文件。

Bluetooth API 为以下蓝牙提供了实现 个人资料:

  • 耳机。耳机配置文件支持蓝牙耳机 。Android 提供了 BluetoothHeadset 类, 它是用于控制蓝牙耳机服务的代理。这包括 蓝牙耳机和免提 (v1.5) 配置文件。BluetoothHeadset 类包括对 AT 命令的支持。有关此主题的详细信息,请参阅 特定于供应商的 AT 命令
  • A2DP。高级音频分发配置文件 (A2DP) 配置文件定义了 可以通过蓝牙将高品质音频从一台设备流式传输到另一台设备 连接。Android 提供了 BluetoothA2dp 类, 用于控制蓝牙 A2DP 服务的代理。
  • 健康设备。Android 支持蓝牙健康设备 个人资料 (HDP)。这样,您就可以创建使用蓝牙进行通信的应用 支持蓝牙的健康设备,如心率监测仪、血液监测器 米、温度计、体重秤等如需查看受支持设备的列表 相应的设备数据专精化代码,请参阅蓝牙的 HDP 设备数据 专精领域认证。 ISO/IEEE 11073-20601 [7] 规范中也提到了这些值 以 MDC_DEV_SPEC_PROFILE_* 的形式指定。有关 有关 HDP 的信息,请参阅健康设备配置文件

以下是使用配置文件的基本步骤:

  1. 获取默认适配器,如 蓝牙设置
  2. 设置 BluetoothProfile.ServiceListener。 此监听器会 BluetoothProfile 个客户 当设备连接到服务或断开服务连接时。
  3. 使用 getProfileProxy() 与与规则相关联的配置文件代理对象 个人资料。在以下示例中,配置文件代理对象是 BluetoothHeadset
  4. onServiceConnected()、 获取配置文件代理对象的句柄。
  5. 获得配置文件代理对象后,使用该对象监控 连接并执行与该配置文件相关的其他操作。

以下代码段展示了如何连接到 BluetoothHeadset 代理 对象,以便您可以控制耳机配置文件:

Kotlin

var bluetoothHeadset: BluetoothHeadset? = null

// Get the default adapter
val bluetoothAdapter: BluetoothAdapter? = BluetoothAdapter.getDefaultAdapter()

private val profileListener = object : BluetoothProfile.ServiceListener {

    override fun onServiceConnected(profile: Int, proxy: BluetoothProfile) {
        if (profile == BluetoothProfile.HEADSET) {
            bluetoothHeadset = proxy as BluetoothHeadset
        }
    }

    override fun onServiceDisconnected(profile: Int) {
        if (profile == BluetoothProfile.HEADSET) {
            bluetoothHeadset = null
        }
    }
}

// Establish connection to the proxy.
bluetoothAdapter?.getProfileProxy(context, profileListener, BluetoothProfile.HEADSET)

// ... call functions on bluetoothHeadset

// Close proxy connection after use.
bluetoothAdapter?.closeProfileProxy(BluetoothProfile.HEADSET, bluetoothHeadset)

Java

BluetoothHeadset bluetoothHeadset;

// Get the default adapter
BluetoothAdapter bluetoothAdapter = BluetoothAdapter.getDefaultAdapter();

private BluetoothProfile.ServiceListener profileListener = new BluetoothProfile.ServiceListener() {
    public void onServiceConnected(int profile, BluetoothProfile proxy) {
        if (profile == BluetoothProfile.HEADSET) {
            bluetoothHeadset = (BluetoothHeadset) proxy;
        }
    }
    public void onServiceDisconnected(int profile) {
        if (profile == BluetoothProfile.HEADSET) {
            bluetoothHeadset = null;
        }
    }
};

// Establish connection to the proxy.
bluetoothAdapter.getProfileProxy(context, profileListener, BluetoothProfile.HEADSET);

// ... call functions on bluetoothHeadset

// Close proxy connection after use.
bluetoothAdapter.closeProfileProxy(bluetoothHeadset);

供应商特定的 AT 命令

应用可以注册以接收预定义供应商专用 AT 的系统广播 命令(如 Plantronics +XEVENT 命令)。例如: 应用可以接收指示已连接设备的电池电量的广播 并根据需要通知用户或采取其他操作创建广播 接收器 ACTION_VENDOR_SPECIFIC_HEADSET_EVENT intent 为耳机处理特定于供应商的 AT 命令。

健康设备配置文件

Android 支持蓝牙健康设备配置文件 (HDP)。蓝牙运行状况 API 包含 BluetoothHealthBluetoothHealthCallback, 和 BluetoothHealthAppConfiguration, 具体请参阅关键类和 接口

使用 Bluetooth Health API 时,了解这些关键 HDP 会很有帮助 概念:

源代码
健康设备,如体重秤、血糖仪或温度计; 将医疗数据传输到智能设备,例如 Android 手机或平板电脑。
接收器
接收医疗数据的智能设备。在 HDP 应用中, 接收器由一个 BluetoothHealthAppConfiguration 对象表示。
注册
用于注册接收器以与特定运行状况进行通信的过程。 设备。
连接
用于在健康设备(来源)和 智能设备(接收器)。

创建 HDP 应用

以下是创建 HDP 应用所涉及的基本步骤:

  1. 获取对 BluetoothHealth 代理对象的引用。与常规广告一样 耳机和 A2DP 配置文件设备,则必须使用getProfileProxy() BluetoothProfile.ServiceListenerHEALTH 个人资料类型 来与配置文件代理对象建立连接。

  2. 创建 BluetoothHealthCallback 并注册应用配置 (BluetoothHealthAppConfiguration)。

  3. 建立与健康设备的连接。

  4. 成功连接到健康设备后,对健康状况进行读写 控制设备接收到的数据需要 运行状况管理器,这实现了 IEEE 11073 规范

  5. 完成后,关闭健康通道并取消注册该应用。该频道还 在长时间闲置时关闭。