蓝牙 ® 开发者需了解的 Android O 相关要点

如需要了解更多蓝牙相关知识,请点击下方连接

https://blog.csdn.net/weixin_47456647/article/details/155188246?spm=1011.2415.3001.5331

谷歌在其开发者大会 Google I/O 上,于 5 月 17 日正式发布了 Android O,目前该系统已面向普通用户开放。和以往一样,谷歌先推出了开发者预览版,让开发者提前了解新一代 Android 系统的情况。下面我们看看 Android O 对蓝牙 ® 开发者意味着什么。

首先,我想先说明 Android 版本的命名规则:谷歌用字母表中的字母为每个新版本命名,按字母顺序依次分配。这些字母通常对应一种甜点或糖果的名称,同时也有传统的版本号。例如:

  • Android 4.3,代号 Jelly Bean( Jelly Bean 是软糖)
  • Android 4.4,代号 KitKat(KitKat 是奇巧巧克力)
  • Android 5.0,代号 Lollipop(Lollipop 是棒棒糖)
  • Android 6.0,代号 Marshmallow(Marshmallow 是棉花糖)
  • Android 7.0,代号 Nougat(Nougat 是牛轧糖)
  • Android 8.0,传闻代号是 Oreo(Oreo 是奥利奥)

虽然 Android 的版本命名很有趣,但可能让你意外的是:本文的目的不是讨论甜点、饼干之类的名称。实际上,我是想让大家了解新一代 Android 系统及其 API,以及其中包含的新蓝牙特性。

从最新的 Android 开发者参考指南可以看到,蓝牙相关的变更主要分为两类:对蓝牙 ® 核心规范 5.0 部分功能的支持,以及蓝牙音频相关的一些调整。

蓝牙 ® 核心规范 5.0 支持

蓝牙 ® 核心规范 5.0 于去年 12 月发布,包含三大核心特性:4 倍传输距离、2 倍传输速率、8 倍 ADV 数据包长度。Android O 的 API 中包含了与蓝牙 ® 核心规范 5.0 相关的变更。

例如:a. setPreferredPhy方法

复制代码
void setPreferredPhy(int txPhy, int rxPhy, int phyOptions)

通过setPreferredPhy方法,你可以为 Android 设备配置蓝牙低功耗(BLE)的物理层(PHY)。蓝牙 ® 核心规范 5.0 的物理层包含三种选项:1M PHY、2M PHY 和编码 PHY。

setPreferredPhy的参数txPhyrxPhy定义如下:

  • PHY_LE_1M_MASK:蓝牙 ® 核心规范 5.0 的 1M PHY,兼容蓝牙核心规范 4.0、4.1、4.2 和 5.0
  • PHY_LE_2M_MASK:蓝牙 ® 核心规范 5.0 的 2M PHY
  • PHY_LE_CODED_MASK:蓝牙 ® 核心规范 5.0 的编码 PHY

setPreferredPhy的参数phyOptions支持以下取值:

setPreferredPhy支持选择并配置蓝牙 ® 核心规范 5.0 的长距离、高速率特性,或兼容蓝牙 ® 核心规范 4.x 与 5.0 设备的 LE 1M PHY。

PHY_LE_1M_MASK PHY_LE_2M_MASK PHY_LE_CODED_MASK
PHY_OPTION_NO_PREFERRED 兼容 4.0、4.1、4.2、5.0 高速率
PHY_OPTION_S2 长距离(2 倍)
PHY_OPTION_S8 长距离(4 倍)

但这里需要强调一点:长距离和高速率特性仅当 Android 设备硬件支持蓝牙 ® 核心规范 5.0 时才可用。

若想了解 Android O 中长距离和高速率蓝牙 API 的更多细节,请参考:https://developer.android.com/reference/android/bluetooth/BluetoothGatt.html

b. 广播扩展(ADV Extension)

在 Android O 中,与记录长度相关的ScanRecord.getBytes()方法也有一些变更。当 Android 应用启动蓝牙低功耗扫描时,代码中会调用startScan(scanCallback)ScanCallback是一个实现了回调函数的对象,在接收到广播包时会被触发。回调函数的调用会传入一个ScanRecord对象作为参数,而scanRecord.getBytes()方法会返回扫描记录(即广播包)的原始字节数据。

Android O 对scanRecord.getBytes()方法返回的数据长度做了如下变更:该方法不再对广播包的字节数做任何假设。因此,应用不应依赖返回数组的长度存在特定的最小值或最大值。蓝牙 ® 核心规范 5.0 设备返回的数据长度可能会超过之前约 60 字节的上限。注意:如果远端设备未提供扫描响应,返回的数据可能不足 60 字节。

同时,Android O 对蓝牙 ® 核心规范 5.0 的支持还包含其他与广播扩展相关的特性,例如startAdvertisingSet方法:

复制代码
void startAdvertisingSet(AdvertisingSetParameters parameters,
                         AdvertiseData advertiseData,
                         AdvertiseData scanResponse,
                         PeriodicAdvertisingParameters periodicParameters,
                         AdvertiseData periodicData,
                         int duration,
                         int maxExtendedAdvertisingEvents,
                         AdvertisingSetCallback callback)

广播集是蓝牙 ® 核心规范 5.0 的特性之一,它允许配置多组独立的广播参数(包括广播数据载荷和时序参数),并将这些参数告知蓝牙控制器。

startAdvertisingSet方法可以看到,我们还支持蓝牙 ® 核心规范 5.0 的新特性 ------ 周期性广播和扩展广播。你可以在 Android 开发者参考指南中找到更多信息:https://developer.android.com/reference/android/bluetooth/le/BluetoothLeAdvertiser.html

蓝牙音频

Android O 还新增了对索尼 LDAC 技术的支持。LDAC 是索尼开发的一种音频编码技术,可通过蓝牙 ® 连接传输高解析度音频内容。该技术能将蓝牙音频信号的传输吞吐量提升至最高 990kbps。在支持 LDAC 后,开启 LDAC 功能的耳机和音箱可以与 Android O 设备连接,提供高品质的音频体验。

LDAC 有三种传输速率选项:

  • 990kbps,音质优先模式
  • 660kbps,标准模式
  • 330kbps,连接优先模式

看起来 Android O 也支持高通的 aptX 和 aptX-HD 技术,这为开发者通过蓝牙连接使用音频功能提供了丰富的选择。

设备部署

目前,Android O 的开发者预览版仍处于测试阶段,可在部分 Nexus 和 Pixel 设备上进行测试,例如 Nexus 5X、6P、Player,以及 Pixel、Pixel XL、Pixel C 设备。

是时候拥抱蓝牙 ® 核心规范 5.0 了

开发者们,别犹豫了 ------ 是时候开始开发利用蓝牙 ® 核心规范 5.0 能力的应用了!

相关推荐
知行合一。。。14 小时前
Python--03--函数入门
android·数据库·python
大、男人15 小时前
python之contextmanager
android·python·adb
不法17 小时前
java查看安卓证书信息
android
儿歌八万首17 小时前
Jetpack Compose 动画实战:让你的 UI 动起来
android·kotlin·动画·compose
千里马学框架18 小时前
如何改进车载三分屏SplitScreen启动交互方式?
android·智能手机·分屏·aaos·安卓framework开发·车载开发·3分屏
REDcker19 小时前
Android WebView 版本升级方案详解
android·音视频·实时音视频·webview·js·编解码
麦兜*19 小时前
【springboot】图文详解Spring Boot自动配置原理:为什么@SpringBootApplication是核心?
android·java·spring boot·spring·spring cloud·tomcat
le16161619 小时前
Android 依赖种类及区别:远程仓库依赖、打包依赖、模块依赖、本地仓库依赖
android
lxysbly19 小时前
psp模拟器安卓版带金手指
android
云上凯歌20 小时前
02 Spring Boot企业级配置详解
android·spring boot·后端