A: How do you work on Android systems? B: Let me show you

  • 导语
    该篇文章主要讲述Bluetooth在Android系统中的实现架构。

1. BlueDroid简介

在Android4.2之前,Android使用的蓝牙协议栈都是Linux官方的BlueZ,在4.2之后Google推出了与博通合作开发的BlueDroid协议栈。BlueDroid被分为蓝牙嵌入式系统(BTE)和蓝牙应用(BTA)两层。BTE实现了蓝牙规格的核心功能,BTA实现了与Android框架层的通信。

2. Arch分析

从Android4.2一直到最新的Android8.0,BlueDroid的架构并没有大的变化。

A: How do you work on Android systems? B: Let me show you_第1张图片
Android Bluetooth Arch

现以Android 7.0为例进行简要介绍:

  • 应用框架层
    APPLICATION FRAMEWORK,该层是具体的蓝牙相关应用的代码,给蓝牙应用提供API调用。
    代码目录为frameworks/base/core/java/android/bluetooth
    该部分代码内部是通过Binder IPC机制来调用bluetooth进程。
  • 蓝牙系统服务层
    BLUETOOTH PROCESS,该层实际上最终被打包成Bluetooth.apk,其在Android框架层实现了蓝牙的service和profiles,并通过JNI调用HAL层。
    代码目录为packages/apps/Bluetooth
  • JNI层
    JNI层代码调用到HAL层,并在蓝牙底层发生某些动作(如发现设备)的时候,接受HAL层的回调。
    代码目录为packages/apps/Bluetooth/jni
  • 硬件抽象层
    HAL,该层定义了android.bluetooth API和蓝牙进程需要使用的标准接口,只有实现这些接口才能确保蓝牙硬件正常工作。
    代码目录为hardware/libhardware/include/hardware
  • 蓝牙协议栈
    Bluetooth Stack,该层实现了通用的蓝牙HAL接口,并且可以进行客制化的扩展和配置。
    代码目录为system/bt,6.0之前代码目录为/external/bluetooth/bluedroid
  • 供应商扩展
    Vendor extentions,该层专为蓝牙芯片供应商设计。供应商可以通过创建libbt-vendor.so并指定这些模块,来添加自定义扩展和HCI层调试。
    代码目录可以根据需求自己设置。

Android 8.0 新特性预览

最新的Android版本,对Bluetooth的支持进行了如下增强:

  • 支持 AVRCP 1.4 标准,该标准支持音乐库浏览。
  • 支持蓝牙低功耗 (BLE) 5.0 标准。
  • 将 Sony LDAC 编解码器集成到蓝牙堆叠中。此技术可以增强蓝牙在音频传输方面的能力,实现更高品质的音效。
    关于LDAC实现主要在A2DP profile中。
  • 总结
    该篇文章主要讲述了Android下的Bluetooth架构,并顺带说明了Android8.0对于蓝牙的一些增强,详情请参考https://developer.android.com/about/versions/oreo/android-8.0.html

你可能感兴趣的:(A: How do you work on Android systems? B: Let me show you)