因为是新手,之前没有研究过蓝牙功能,也不知到Bluetooth 在android 其他版本上的情况,但是大概了解之后发现,Android4.2 之后的Bluetooth 模块和之前版本的android有很大的出入,具体表现在哪里我就不研究了,因此我是直接拿Android4.2 Bluetooth 来研究的,当然这也参考了网上很多前辈的文章:android -- 蓝牙 bluetooth (一) 入门等。在这里表示感谢!!!


.蓝牙模块相关的代码 在Android 4.2上的分布如下:

settings下面有BluetoothUI部分代码。主要负责蓝牙的开/关和蓝牙设备查找等。


packages/apps/Bluetooth/

蓝牙的Bluetooth.apk文件,提供上层服务和底层交互。这个目录里的代码更像一个桥梁承上启下的作用,承上:通过Binderframework/base/core/java/android/bluetooth蓝牙服务通信

启下:通过 JNIexternal/bluetooth/blueroid蓝牙协议通信。



framework/base/core/java/android/bluetooth

蓝牙各种协议的API提供给上层使用。我们平时使用的BluetoothAdapterBluetoothDeviceBluetoothSocket



external\bluetooth\bluedroid

官方蓝牙协议栈,相当于蓝牙HAL操作。供所有蓝牙的实际操作,开关蓝牙,HCIACLSCOL2CAPRFComm,蓝牙的所有Profile等。


.蓝牙整体结构图如下:

1.Applications是蓝牙相关的上层应用UI部分,这里我们主要分析 Settings APP下面有广蓝牙的部分。


2.Java Framework主要是蓝牙服务的API 接口,提供给Settings APP下蓝牙设置调用。


3.Bluetooth APPpackages/apps/Bluetooth/ 下面的代码,提供蓝牙的核心服务,主要是通过JNI 调用 Bluedroid 蓝牙协议


4.Bluedroid 蓝牙协议栈,是external\bluetooth\bluedroid下面的代码,实现了具体蓝牙打开,关闭,查找等功能。


.以蓝牙 打开 enable 为例简单说明下蓝牙工作的整个过程:


Settings UI enable() ----->> Framwork BluetoothManagerService enable()------>>> Bluetooth APP AdapterService enable()------>>>Bluedroid enableNative().


接下来详细分析整个蓝牙打开的过程,深入到真个代码体系当中,前提有完整的Android4.2代码。

更多相关文章

  1. Android的视频通话的Java代码
  2. Android中直播视频技术探究之---视频直播服务端环境搭建(Nginx+R
  3. Android应用程序绑定服务(bindService)的过程源代码分析
  4. Android(安卓)ViewPager之实现轮播广告效果
  5. 十大Android开发趋势| 2020年指南
  6. 带你从源代码详细分析View的绘制过程
  7. Android的内存管理
  8. phonegap 自动更新android app
  9. Mac OS X下用Eclipse浏览和编译Android源代码

随机推荐

  1. Android Studio Gradle Syn failed 解决
  2. android弹出和关闭软键盘
  3. Android studio3.0 使用Lambda表达式
  4. 在android中,如何用指定的浏览器打开某网
  5. IOS/Android 读取蓝牙设备电量信息
  6. Android Activity或者Fragment 向Adapter
  7. android 经纬度 double类型 转换成 度分
  8. android之短信发不出去,短信空指针,smsMana
  9. Android SmartRefreshLayout的使用
  10. Android 状态栏背景颜色修改与状态栏字体