当前位置:   article > 正文

android bluetooth 框架分析_android硬件通信之 蓝牙通信 第三方库

android硬件通信之 蓝牙通信 第三方库
  • Android提供了一个默认的蓝牙协议栈-BlueDroid,其被分为蓝牙嵌入式系统(BTE)和蓝牙应用(BTA)两层。BTE实现了蓝牙规格的核心功能,BTA实现了与Android框架层的通信。
  • 蓝牙系统服务通过JNI与蓝牙协议栈进行通信,通过Binder IPC与应用层进行通信。系统服务给开发者提供了各种蓝牙profile的访问。下图为蓝牙协议在Android系统的总体架构图。

  • 应用框架层

代码目录为frameworks/base/core/java/android/bluetooth。

使用android.bluetooth相关的API和蓝牙硬件进行交互,内部是通过Binder IPC机制来调用bluetooth进程。

 

  • 蓝牙系统服务

该层实际上被打包成一个system APP(Bluetooth.apk),其在Android框架层实现了蓝牙的service和profiles,并通过JNI调用HAL层。

代码目录为packages/apps/Bluetooth。

  • JNI

代码目录为packages/apps/Bluetooth/jni。

JNI层代码调用到HAL层,并在蓝牙底层发生某些动作(如发现设备)的时候,接受HAL层的回调。

  • 硬件抽象层

该层定义了android.bluetooth API和蓝牙进程需要使用的标准接口,只有实现这些接口才能确保蓝牙硬件正常工作。

代码目录为hardware/libhardware/include/hardware。

  • 蓝牙协议栈

该层实现了通用的蓝牙HAL接口,并且可以进行客制化的扩展和配置。

 

代码目录为system/bt。

 

  • 供应商扩展

该层专为蓝牙芯片供应商设计。供应商可以通过创建libbt-vendor.so并指定这些模块,来添加自定义扩展和HCI层调试。

 

  1. +--------------------------------------+
  2. | Application Framework |
  3. | +-----------------------------+ |
  4. | | BT Apps API | |
  5. | | android.bluetooth | |
  6. | +-----------------------------+ |
  7. +-----------------^--------------------+
  8. |
  9. |Binder
  10. |
  11. +-----------------v--------------------+
  12. | Bluetooth process: Packages/apps/ |
  13. | Bluetooth |
  14. | |
  15. | +------------------------------+ |
  16. | | Bluetooth Service | |
  17. | +------------------------------+ |
  18. | | Bluetooth Profiles | |
  19. | +------------------------------+ |
  20. +-----------------^--------------------+
  21. |
  22. |JNI
  23. |
  24. +-----------------v--------------------+
  25. | HAL hardware/libhardware/include/ |
  26. | hardware/ |
  27. | |
  28. | +--------------------------------+ |
  29. | | Bluetooth HAL Interfaces | |
  30. | +--------------------------------+ |
  31. | |Bluetooth Profile HAL Interfaces| |
  32. | +--------------------------------+ |
  33. +----------------^---------------------+
  34. |
  35. |
  36. +----------------v---------------------+
  37. | BlueDroid Stack /external/bluetooth/|
  38. | bluedroid |
  39. | |
  40. | +---------------------------------+ |
  41. | | Bluetooth App Layer | |
  42. | +---------------------------------+ |
  43. | | Bluetooth Embedded System | |
  44. | +---------------------------------+ |
  45. | +---------------------------------+ |
  46. | | Vendor Extensions | |
  47. | | /vendor/company/libbt-vendor | |
  48. | +---------------------------------+ |
  49. +--------------------------------------+

 

源码分析可以参考 https://blog.csdn.net/column/details/fang1021.html

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/我家小花儿/article/detail/326540
推荐阅读
相关标签
  

闽ICP备14008679号