蓝牙服务

通过蓝牙,设备可以传输数据并供各种交互式服务(例如音频、短信和电话)使用。您可以在以下位置找到用于不同服务的蓝牙配置文件: hardware/libhardware/include/hardware/

音频

利用蓝牙连接,用户可在启用了蓝牙的设备上流式传输音频。对于大多数音频用例,Android 设备是音频源,呈现设备(例如音响设备或耳机)是接收器。

绝对音量控制

在 Android 6.0 及更高版本中,Android 蓝牙堆栈允许音频源设置绝对音量,以便用户准确控制音频音量。音频源设备会将音量信息和未衰减的音频发送到接收器。然后,接收器会根据音量信息放大音频,以便用户听到准确的播放音量。

音频源设备还可以注册接收音量通知。进行此项注册后,当用户使用接收器上的控件更改音量时,接收器便会向音频源发送通知。这样一来,音频源便能够准确地在界面上显示音量信息。

绝对音量控制默认处于开启状态。要停用绝对音量控制,用户可以依次转到设置 > 系统 > 开发者选项,然后选择停用绝对音量功能开关。

高级音频编解码器

在 Android 8.0 中,使用高级音频分发配置文件 (A2DP) 的设备可以支持额外的音频编解码器。当设备连接到远程音频接收器时,蓝牙堆栈支持音频编解码器协商。该协商旨在选择发送器和接收器都支持的最佳编解码器,以提供高质量的音频。之后,所有音频都会先路由选定的编码器,然后再发送到接收器。

实现

运行 Android 8.0 且支持 A2DP 的设备会自动获得额外编解码器支持。设备制造商可能需要针对某些专有音频编解码器获得单独的许可和二进制 Blob。除了 SBC,Android 8.0 还支持以下编解码器:

  • AAC
  • aptX
  • aptX HD
  • LDAC

设备制造商可以选择他们的设备首先尝试使用哪些编解码器。可以通过在 res/values/config.xml 中更改以下值来设置编解码器的优先级:

  <!-- Configuring priorities of A2DP source codecs. Larger value means
          higher priority. Value -1 means the codec is disabled.
          Value 0 is reserved and should not be used here. Enabled codecs
          should have priorities in the interval [1, 999999], and each
          priority value should be unique. -->
        <integer name="a2dp_source_codec_priority_sbc">1001</integer>
        <integer name="a2dp_source_codec_priority_aac">2001</integer>
        <integer name="a2dp_source_codec_priority_aptx">3001</integer>
        <integer name="a2dp_source_codec_priority_aptx_hd">4001</integer>
        <integer name="a2dp_source_codec_priority_ldac">5001</integer>
      

LDAC 认证

Android 开源项目纳入了索尼的 LDAC 编解码器,因此对于该编解码器,不需要单独的许可或 Blob。要将 LDAC 编解码器集成到您的设备中,请向索尼提交申请,并按照 LDAC 认证流程进行操作。

LDAC 认证网站上提供了关于 LDAC 的文档(例如规范和操作手册),而且还提供了针对移动设备和平板电脑设备的验证和互操作性测试。需要将表明通过测试的结果发送给索尼,才能完成 LDAC 认证。

界面功能

除了额外编解码器支持,Android 8.0 还提供了一项面向用户的设置,用于停用高清 (HD) 蓝牙音频编解码器。

  1. 依次转到设置 > 已连接的设备 > 蓝牙
  2. 点按您要停用编解码器的接收器旁边的齿轮图标。
  3. 取消选中 HD 音频复选框。

对“设置”进行自定义的设备制造商应为用户实现一种停用高清编解码器的方式。

短信

借助通过蓝牙发送短信的功能,用户可以从远程设备阅读、浏览和撰写短信。该功能通常是在将手机连接到车载信息娱乐系统时使用。

电话

通过蓝牙电话服务,用户可以将通话从手机流式传输到另一台蓝牙设备,并可以将手机中的联系人信息同步到另一台蓝牙设备。这些功能经常是在用户开车时用于进行免提通话。

在 Android 8.0 中,蓝牙支持手机默认铃声。当通过蓝牙连接的手机收到来电时,接收器上将会播放铃声。要启用手机默认铃声,请依次转到设置 > 系统 > 开发者选项,然后选择启用手机默认铃声开关。

蓝牙功能

为了实现蓝牙服务,蓝牙堆栈支持多种配置文件和功能。

蓝牙配置文件

可用的蓝牙配置文件如下:

功能 Android 版本
名称 说明 6.0 7.0 7.1 7.1.2 8
SAP SIM 卡访问配置文件 1.1 1.1 1.1 1.1 1.1
MAP 用于短信的消息访问配置文件 1.2 1.2 1.2 1.2 1.2
OPP 对象推送配置文件 1.1 1.1 1.1 1.1 1.2
OBEX over L2CAP 通过逻辑链路控制和适配协议进行对象交换
HFP 音频网关 免提模式配置文件 1.6 1.6 1.7 1.7 1.7
HSP 耳机配置文件 1.2 1.2 1.2 1.2 1.2
A2DP 高级音频分发配置文件 1.2 1.2 1.2 1.2 1.2
AVRCP 音频/视频远程控制配置文件 1.3 1.3 1.3 1.3 1.4
HID 人机接口设备配置文件 1.0 1.0 1.0 1.0 1.0
PBAP 电话簿访问配置文件 1.1.1 1.1.1 1.1.1 1.1.1 1.2
HDP 健康设备配置文件 1.0 1.0 1.1 1.1 1.1
SPP 串行端口配置文件 1.2 1.2 1.2 1.2 1.2
PAN/BNEP 个人区域网络配置文件/蓝牙网络封装协议 1.0 1.0 1.0 1.0 1.0
DIP 设备 ID 配置文件 1.3 1.3 1.3 1.3 1.3
HOGP 1.0 HID over GATT
高清音频1 请参阅上面的“高级音频编解码器”

1实现高清音频同时取决于音频源和接收器上的设备功能。

蓝牙低功耗功能

可用的 BLE 功能如下:

功能 Android 版本
名称 6.0 7.0 7.1 7.1.2 8
BR/EDR 安全连接 4.1 4.1 4.1 4.1 5.0
LE 隐私 4.2 4.2 4.2 4.2 5.0
LE 安全连接 4.2 4.2 4.2 4.2 5.0
数据包扩展 4.2 4.2 4.2 4.2 5.0
32 位 UUID
双模式 LE(中央/外设)
LE 外设模式
Google HCI 要求
LE 连接导向型频道 2

2实现 LE 连接导向型频道同时取决于音频源和接收器上的设备功能。