转自:http://blog.csdn.net/xubin341719/article/details/40378205

一、名词解释:(有用信息增加中……)

BTI F: Bluetooth Interface
BTU : Bluetooth Upper Layer
BTM: Bluetooth Manager 
BTE  :Bluetooth embedded system
BTA  :Blueetooth application layer
CO: call out\CI: call in
HF : Handsfree Profile
HH: HID Host Profile
HL: Health Device Profile
AV:audio\vidio
ag: audio gateway 
ar: audio/video registration
gattc: GATT client
BLE:

二、       BlueDroid  &&  BlueZ
Android 4.2之前,Google一直使用的是Linux官方蓝牙协议栈BlueZ。BlueZ实际上是由高通公司在2001年5月基于GPL协议发布的一个开源项目,做为Linux 2.4.6内核的官方蓝牙协议栈。随着Android设备的流行,BlueZ也得到了极大的完善和扩展。例如Android 4.1中BlueZ的版本升级为4.93,它支持蓝牙核心规范4.0,并实现了绝大部分的Profiles。
从Android 4.2开始,Google便在Android源码中推出了它和博通公司一起开发的BlueDroid以替代BlueZ。BlueZ的创始者,高通公司也将在基于其芯片的Android参考设计中去除BlueZ,支持BlueDroid。
相比BlueZ,BlueDroid最值得称道的地方就是其框架结构变得更为简洁和清晰。对我们工程师来说这也是个不错的福利,清晰、简洁的架构使我们在debug过程中思路更清晰;
1、Android 4.2中BlueDroid的框架结构图:(Google官方提供)。

(1)、应用程序通过android.bluetooth package下的API来调用系统的Bluetooth功能。
(2)、应用层空间增加了一个名为Bluetooth的App。它做为系统的bluetooth核心进程而存在。其内部将通过JNI来调用Bluetooth HAL层以完成各种蓝牙请求。
(3)、Bluetooth HAL也属于Android 4.2新增模块,它由蓝牙核心规范硬件抽象层和蓝牙应用规范硬件抽象层组成。由于HAL层的隔离作用,上层代码可轻松移植到不同芯片平台。
(4)、作为整个蓝牙服务的核心,Bluetooth Stack模块则由Bluetooth Application Layer(缩写为BTA)和Bluetooth Embedded System(缩写为BTE)两大部分组成。BTA实现了蓝牙设备管理、状态管理及一些应用规范。而BTE则通过HCI与厂商蓝牙芯片交互以实现了蓝牙协议栈的通用功能和相关协议。另外,BTE还包括一个统一内核接口(GKI),蓝牙芯片厂商可借助GKI快速轻松得移植蓝牙协议栈到其他操作系统或手机平台上。
(5)、Vendor Extentions(厂商扩展):开发者可以添加自定义扩展以实现厂商特定的模块和组件。
(6)、bluedroid 整体协议栈架构:


整个系统的架构很简单,因为大多的事情都是在Bluedroid层里面做的,上层只管去Call和Callback就是了,这部分我们在后面分析代码做详细分析。
2、BlueZ 代码架构
和Bluedroid类似,BlueZ也是按照标准流程从应用一直走下来,不过两者唯一的区别是BlueZ的DBUS。blueDroid中取出DBUS是代码结构变的更加清晰,看起来跟顺畅。如下图蓝牙代码架构(Google官方提供):


3、BlueDrod  PK  BlueZ     
BlueDroid虽然对BlueZ大有取而代之的趋势,但现在它对蓝牙应用规范的支持还不够完善。例如BlueDroid仅支持AVRCP 1.0,而非最新的AVRCP 1.5。所以,国内某些芯片或手机厂商若能及早完成BlueZ相关模块到BlueDroid的移植工作,相信能帮助它们在竞争日趋白日化的移动世界中拔得先机。另外,作为一种成熟、低功耗无线通信技术的先锋,蓝牙未来在可穿戴设备领域中也将扮演越来越重要的作用。

Android BlueDroid(一):BlueDroid概述相关推荐

  1. android.opengl.GLSurfaceView.Renderer概述

    android.opengl.GLSurfaceView.Renderer概述 翻译至android.opengl.GLSurfaceView.Renderer Class Overview,水平有限 ...

  2. Android 图形架构之一 ——概述

    前言 本系列的文章,可以让你明白,一个View最终是如何显示到屏幕上的,从应用层到硬件抽象层.对分析app的卡顿,掉帧等 有很大帮助. 由于图形架构的涉及到的代码量很大,所以本篇先来个总体的概述,有个 ...

  3. android Surface和SurfaceView概述

    android.view.Surface概述 翻译至android.view.Surface surface专门用来处理屏幕排版器(screen compositor)管理的一块原始内存(raw bu ...

  4. Android开发者指南-传感器-概述

     Sensors Overview 英文原文:http://developer.android.com/guide/topics/sensors/sensors_overview.html 版本: ...

  5. Android系统漏洞分析概述

    本文描述了自己对Android系统漏洞分析的理解,同时也作为自己学习漏洞分析的大纲,逐步规范漏洞分析的方法和步骤,最终构成自己的漏洞分析体系. 1 概述 漏洞分析是指在代码中迅速定位漏洞产生的位置(简 ...

  6. android Apk打包过程概述_android是如何打包apk的

    最近看了老罗分析android资源管理和apk打包流程的博客,参考其他一些资料,做了一下整理,脱离繁琐的打包细节和数据结构,从整体上概述了apk打包的整个流程. 流程概述: 1.打包资源文件,生成R. ...

  7. Android查看系统事件,Android系统的事件处理概述

    通过对Android基本组件的学习,也有接触少部分Android的事件处理,比如按钮的点击事件.选框的状态切换事件. 一.Android事件处理 Android提供了两种方式的事件处理:基于回调的事件 ...

  8. Android 网络性能优化-概述和DNS优化

    1. 移动App网络优化背景 对于Android来说,开发者可以轻松的打造一套 MVP + Retrofit + RxJava 的框架来处理所有的网络请求.因为 Retrofit下层封装的OkHttp ...

  9. 《Android虚拟机》----虚拟机概述

    No1: 虚拟机是指通过软件模拟的具有完整硬件系统功能的.运行在一个完全隔离的环境中的完整计算机系统. No2: Java虚拟机由如下五个部分组成:一组指令集.一组寄存器.一个栈.一个无用单元收集堆. ...

  10. Android ViewPropertyAnimator 属性动画概述

    在码农的世界里,优美的应用体验,来源于程序员对细节的处理以及自我要求的境界,年轻人也是忙忙碌碌的码农中一员,每天.每周,都会留下一些脚印,就是这些创作的内容,有一种执着,就是不知为什么,如果你迷茫,不 ...

最新文章

  1. Android进阶笔记:Messenger源码详解
  2. 给定一个n,输出从1到n的整数
  3. js 实现上下拖动改变父 div 的高度,左右上下拖动动态分割孩子的宽高
  4. VS2008中使用JSONCPP方法小结
  5. 基于IMAGE法的房间回响模型创建、C++代码实现、matlab仿真
  6. 延边大学计算机金小峰,第九届中国信息安全博士论坛在我校开幕
  7. js 带笔锋 签字版_年轻人的第一支签字笔? ——米家签字笔评测
  8. html左滑效果图,前端福利——左滑右滑,绝对是你见过的最简单的写法 - 你猜猜看...
  9. xp计算机管理窗口,XP系统设备管理器的打开技巧
  10. win10支持linux内核版本是多少,win10自带linux版本是多少
  11. iOS蓝牙开发总结-4
  12. MATLAB画图调整分辨率
  13. 淘宝/天猫收货地址列表 API和快递费用的 API解析
  14. 常用电阻E24,E96阻值速查
  15. 简历推荐_12位AI产品经理
  16. chromium 47 Chrome浏览器启动命令行参数
  17. Vue 单文件模板中覆盖引入库 CSS 样式
  18. Windows部署的gogs开机自启动
  19. android调起浏览器设置头部,Android开发:调起手机浏览器
  20. 三阶魔方大中小魔公式_三阶魔方花样玩法公式大全

热门文章

  1. NSUserDefaults写作和阅读对象定义自己
  2. Meteor资源国外优秀web APP 收藏
  3. ViT (Vision Transformer) ---- Text Generation(文本生成器)
  4. idea如何将web项目打成war包maven和非maven
  5. Jquery.dataTables分页排序参数详解
  6. mysql 一条sql 事务_MySQL的事务
  7. python爬虫数据提取_入门Python爬虫——提取数据篇
  8. ansible-handlers
  9. linux下python3源码安装及卸载
  10. js 数字格式化,只能输入正负整数,小数