程序员BluetoothAndroid开发

A: How do you work on Android sy

2017-09-21  本文已影响0人  ZafirTab

1. BlueDroid简介

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

2. Arch分析

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

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中。
上一篇下一篇

猜你喜欢

热点阅读