`
923723914
  • 浏览: 639699 次
文章分类
社区版块
存档分类
最新评论

Android中bluetooth的架构

 
阅读更多

既然我们想要系统地进行分析一下Androidbluetooth,那么就有必要首先来从总体架构上看一下bluetoothAndroid中是处于哪些层次,做到手中有枪,心里不慌。Bluetooth从总体来看,基本的架构图如下:

这张图是我拷贝的网上的一份介绍bluetoothppt上,他应该也是出于某一份大牛之手,可惜的是我并没有能够找到具体的出处,若有人看到可以告诉我一下。

从这张图可以看到,在最上层是一些Profile

l GAPGeneral Access Profile:定义了Bluetooth建立基带链路的通用方法,以保证两个bluetooth设备能够相互通信。这一块在Android代码中并没有很明显的体现。

l SDPService Discovery Profile):他用来发现对方Bluetooth所支持的Service。比如说,我连接一个耳机,那么这个耳机究竟是只能打电话,还是既能打电话又能听音乐,抑或是只能听音乐,这都是通过SDP来发现,所以,它贯穿于我们最开始的信息交互流程中。

l Headset/Handsfree:这两个profile是用来实现打电话相关的内容的。

l RFCOMM:这是一个基本的Profile,很多应用都是基于它上面实现的,比如说我们文件的传输(OPP Object Push Profile),当然上面说Headset/Handsfree,其实准确的说也是在RFCOMM层之上的。

从个人的角度来看,位于最上层的还有几个APP

l Settings App:用于构造设置中的UI。就是我们在手机打开设置时所看到的打开/关闭蓝牙的UI操作。

l Phone App:这个是打电话时的UI,和蓝牙相关的就是声音出来的选项,可以选择蓝牙接听的菜单那一块的内容。

l Bluetooth App:这一块在图中没有画出来,他并不直接体现在UI上,可以理解为一个后台运行的apk。包括了蓝牙文件发送(OPP)和电话薄传输(PBAP)两个部分。

在中间Framework层,主要实现了各种API,这些API最终都是要通过jni层调入到下面来具体实现的。当然,他们还承担着接受底层消息的重任,这些消息也是要最终反馈到UI层的。

jni层之下以及kernel层之上是bluez层(或者准确的说,其实bluez层是横跨jni层之下和kernel层的,如图中绿色框所示)。jni层和bluez的通信是通过dbus来实现的,至今为止我都没有能够理解dbus最终的实现原理,不过没关系,在后面我们和大家再一起到源码中去学习学习这一块。

kernel层之下就是我们的bluetooth的芯片接口driver,这张图里面是使用的uart进行数据的传输的,后期我们也就以uart为主来详细进行分析。当然,还有别的接口,比如usb等等。

这张图还有几个地方需要注意的:

一是最左边的btpower on/off。一般而言,这是在bluetooth打开/关闭的时候用于power的设置的。我看到的基本都是通过rfkill来进行power的加上和去除的。

二是hciattach直接到tty设备的通路,这也是在bluetooth打开/关闭的时候对芯片进行一些各个厂家的初始化所需要的。

大体上来说,这张图也就解释清楚了,希望各位能够从总体上对蓝牙的架构有个初步的了解,这对我们后面去看bluetooth的代码实现是很有好处的。当然,这里面还有很多对我们来说陌生的名词,没关系,现在陌生后期看多了估计我们就会明白了。

分享到:
评论

相关推荐

    AndroidM_Bluetooth模块软件架构设计解读

    本文档详细介绍Android6.0蓝牙的代码架构、功能,以及各个模块主要功能实现时序图。

    Android之蓝牙驱动开发总结 - 全网唯一

    二 Android Bluetooth架构 2.1 Bluetooth架构图 2.2 Bluetooth 代码层次结构 三 Bluetooth 协议栈分析 3.1 蓝牙协议栈 3.2 Android 与蓝牙协议栈的Bluetooth 之HCI层分析 .4.1HCI层与基带的通信方 4.2包的分析及研究...

    Android 初学中阶高阶书籍_集合打包3

    段,Android 图像处理篇,Android_CTS测试研,GoogleMaps基础开发教程,Android_GPS架构分析,android_JNI编程_一些技 巧,android_jni操作指南,Android_NDK开发实例,Android_RIL层剖析(官方翻译),Android2.2+API+中文...

    Android 初学中阶高阶书籍_集合打包2

    段,Android 图像处理篇,Android_CTS测试研,GoogleMaps基础开发教程,Android_GPS架构分析,android_JNI编程_一些技 巧,android_jni操作指南,Android_NDK开发实例,Android_RIL层剖析(官方翻译),Android2.2+API+中文...

    Android-BluetoothKit:Android BLE蓝牙通信库

    BluetoothKit---Android Bluetooth Framework 这个库用于Android蓝牙BLE设备通信,支持设备扫描,连接,读写,通知。 这套框架存在的意义 一、统一解决Android蓝牙通信过程中的兼容性问题 二、提供尽可能简单易用的...

    Android中文文档

    Android中文文档.doc Android中文文档.pdf android 中文文档 什么是 Android? Android 是一个专门针对移动设备的软件集,...Android 架构 下图显示的是 Android 操作系统的主要组件。每一部分将会在下面具体描述。

    [14本经典Android开发教程]-3-Android SDK 中文开发文档

    Android 架构 下图显示的是Android操作系统的主要组件。每一部分将会在下面具体描述。 已上传2本: [14本经典Android开发教程]-1-Android开发从入门到精通http://download.csdn.net/detail/cleopard/8355245 [14本...

    新版Android开发教程.rar

    � MVC 和 Web APP 架构 Android Android Android Android 开发背景 � 计算技术、无线接入技术的发展,使嵌入式系统逐渐有能力对桌面系统常规业务进行支持。 � 谷歌长期以来奉行的移动发展战略:通过与全球各地的...

    免费下载-Android SDK 中文开发文档

    免费下载-Android SDK 中文开发文档 什么是Android? Android 是一个专门针对移动设备的软件集,它包括一个操作系统,中间件和...Android 架构 下图显示的是Android操作系统的主要组件。每一部分将会在下面具体描述。

    Android应用程序开发教程PDF电子书完整版、Android开发学习教程

    Android Android Android Android 的系统架构 系统构架 6 支持的功能 + Application framework: 可重用的和可替换的组件部分,在这个层面上,所有的软件都是平等的。 + Dalvik virtul machine: 一个基于 Linux 的...

    Android蓝牙通信框架BluetoothKit.zip

    二、充分解决了Android中BLE兼容性和稳定性问题  Android系统对蓝牙4.0支持得并不完善,有许多bug, BluetoothKit很好地解决了其中大部分已知的问题。  三、简单易用,接口简洁明了  BluetoothKit采用异步...

    安卓(Android)程序开发初级教程技术文档【视频+教程+源码】

    还有两个重要的就是: Android SDK 以及 Android 用于Eclipse 中的插件。  Android SDK 的下载链接: http://code.google.com/android/  如果你是第一次使用这些软件,请注意安装顺序和设置好环境变量。 一般的顺序...

    Android开发教程&笔记

    蓝牙Bluetooth, EDGE, 3G, 和WiFi(依赖于硬件) ; 照相机,GPS,指南针,和加速度计(accelerometer) (依赖于硬件) ; 丰富的开发环境包括设备模拟器,调试工具,内存及性能分析图表,和Eclipse 集成开发环境...

    Ti BT FM GPS架构

    这份资料,绝对不可多得,下了就知道 Bluetooth, FM, GPS Solution with Shared Transport ...8. Appendix 1: Shared Transport in Android 25 8.1. Execution of UIM 25 8.2. Bluetooth On/Off 25

    dp18_ap6330整理完工20170209_1129.7z

    frameworks/native/data/etc/android.hardware.bluetooth_le.xml:system/etc/permissions/android.hardware.bluetooth_le.xml \ frameworks/native/data/etc/android.software.verified_boot.xml:system/etc/...

    TI GPS BT FM三合一架构及代码移植方法

    Table of Contents Table of Contents 2 List of Figures 3 Revision History 4 1. Introduction 5 ...8. Appendix 1: Shared Transport in Android 25 8.1. Execution of UIM 25 8.2. Bluetooth On/Off 25

    Android9.0 蓝牙开启流程

    /packages/apps/Settings/src/com/android/settings/bluetooth/BluetoothSwitchPreferenceController.java public void onClick(View v) { // send users to scanning settings if they click on the link in the ...

    VisionMeasurement:Android4opencv和蓝牙

    Android4opencv & bluetooth 参考博客: 项目简介 汽车加工生产线中一个自动化线束安装的项目 大插Kong插头安装 圆Kong插件安装 微型插Kong插头安装 如下图所示 算法部分 相机标定 张友正相机标定算法 理论原理??...

    Bluetooth_Voice:使用Android智能手机通过语音命令控制Arduino!

    要求1个Arduino Uno 1个模块蓝牙HC-05 1个面包板3电阻10k 4跳线,母对公4跳线公对公1个LED架构图![Schema]( )(将LED放在端口13和GND上)应用程式Android 在此处下载免费的应用程序: : 类似的演示

    Health-MVP:具有MVP架构的骨科支架数据监控功能的android应用

    Health-MVP An android client with function of data monitoring of orthopedic brace with MVP architecture

Global site tag (gtag.js) - Google Analytics