Android Bluetooth源码结构
Android Bluetooth架构
Android 5.1 蓝牙源码目录
一、Bluetooth 的设置应用
packages/apps/Settings/src/com/android/settings/bluetooth/
蓝牙设置应用及设置参数,蓝牙状态,蓝牙设备等。
文件示例:
BluetoothCallback.java
BluetoothDeviceFilter.java
BluetoothDevicePreference.java
BluetoothDiscoverableEnabler.java
BluetoothDiscoveryReceiver.java
BluetoothEnabler.java
BluetoothEventManager.java
BluetoothPairingDialog.java
BluetoothPairingRequest.java
BluetoothSettings.java
CachedBluetoothDeviceManager.java
DeviceListPreferenceFragment.java
DeviceProfilesSettings.java
HidProfile.java
LocalBluetoothAdapter.java
LocalBluetoothManager.java
LocalBluetoothPreferences.java
LocalBluetoothProfile.java
LocalBluetoothProfileManager.java
二、 Bluetooth 的JAVA类
frameworks/base/core/java/android/bluetooth/
frameworks/base/services/core/java/com/android/server/BluetoothManagerService.java
如BluetoothClass,BluetoothAdapter,BluetoothDevice等。Bluetooth应用就是通过这些类实现。
文件示例:
BluetoothAdapter.java
BluetoothClass.java
BluetoothDevice.aidl
BluetoothDevice.java
BluetoothGattCallback.java
BluetoothGattCallbackWrapper.java
BluetoothGattCharacteristic.java
BluetoothGattDescriptor.java
BluetoothGatt.java
BluetoothGattServerCallback.java
BluetoothGattServer.java
BluetoothGattService.java
BluetoothInputDevice.java
BluetoothInputStream.java
BluetoothManager.java
BluetoothProfile.java
IBluetooth.aidl
IBluetoothCallback.aidl
IBluetoothGatt.aidl
IBluetoothGattCallback.aidl
IBluetoothGattServerCallback.aidl
IBluetoothInputDevice.aidl
IBluetoothManager.aidl
IBluetoothManagerCallback.aidl
IBluetoothProfileServiceConnection.aidl
IBluetoothStateChangeCallback.aidl
- le
AdvertiseCallback.java
AdvertiseData.aidl
AdvertiseData.java
AdvertiseSettings.aidl
AdvertiseSettings.java
BluetoothLeAdvertiser.java
BluetoothLeScanner.java
BluetoothLeUtils.java
ResultStorageDescriptor.aidl
ResultStorageDescriptor.java
ScanCallback.java
ScanFilter.aidl
ScanFilter.java
ScanRecord.java
ScanResult.aidl
ScanResult.java
ScanSettings.aidl
ScanSettings.java
三、 Bluetooth 的服务应用
packages/apps/Bluetooth/src/com/android/bluetooth
蓝牙btservice,gatt, hid等实现。蓝牙传输及配对等实现。
编译生成Bluetooth.apk。依赖: libbluetooth_jni.so, bluetooth.default.so
LOCAL_JNI_SHARED_LIBRARIES := libbluetooth_jni
LOCAL_REQUIRED_MODULES := bluetooth.default
文件示例:
- btservice:
AdapterApp.java
AdapterService.java
AdapterState.java
BondStateMachine.java
JniCallbacks.java - gatt:
AdvertiseManager.java
AdvertiseClient.java
GattService.java
ScanClient.java
ScanManager.java - hid:
HidService.java
四、 Bluetooth 的JNI接口
packages/apps/Bluetooth/jni/
主要是为Bluetooth的JAVA类提供一些底层API支持(C++实现)。如gatt等。
编译完成后生成libbluetooth_jni.so,供Bluetooth.apk使用。
文件示例:
- com_android_bluetooth_btservice_AdapterService.cpp
- com_android_bluetooth_hid.cpp
- com_android_bluetooth_gatt.cpp
五、 Bluetooth的协议栈支持
external/bluetooth/bluedroid/
提供蓝牙协议栈支持,android主要使用Bluedroid协议栈。
文件示例:
external\bluetooth\bluedroid:
bta: 编译生成libbt-brcm_bta.so
- gatt
bta_gattc_act.c
bta_gattc_api.c
bta_gattc_cache.c
bta_gattc_ci.c
bta_gattc_main.c - hh
bta_hh_act.c
bta_hh_api.c
bta_hh_cfg.c
bta_hh_le.c
bta_hh_main.c
- gatt
btif: 源文件在main中被编译
- co
bta_dm_co.c
bta_gattc_co.c
bta_gatts_co.c
bta_hh_co.c - src
bluetooth.c: // HAL,生成bluetooth.defualt.so,btif调用主入口
btif_config.c
btif_core.c
btif_dm.c
btif_gatt.c
btif_gatt_client.c
btif_hh.c
btif_sm.c
- co
gki: 编译生成libbt-brcm_gki.so
hci: 编译生成libbt-hci.so
bt_hci_bdroid.c: hci主入口
btsnoop.c
hci_h4.c
userial.c
vendor.c:打开libbt-vendor.somain:编译生成bluetooth.defualt.so
bte_conf.c
bte_init.c
bte_logmsg.c
bte_main.c编译生成bluetooth.defualt.so,包含所有btif的源码,
使用了libbt-brcm_bta,libbt-brcm_gki.so, libbt-brcm_stack.so, libbt-hci.so, libbt-utis.so, 依赖bt_stack.conf,libbt-vendor.soLOCAL_STATIC_LIBRARIES :=
libbt-brcm_bta
libbt-brcm_gki
libbt-brcm_stack
libbt-hci
libbt-utils \LOCAL_REQUIRED_MODULES :=
auto_pair_devlist.conf
bt_did.conf
bt_stack.conf
libbt-vendorstack: 编译生成libbt-brcm_stack.so
- btm
btm_acl.c
btm_ble_addr.c
btm_ble_bgconn.c
btm_ble.c
btm_ble_gap.c
btm_inq.c
btm_main.c
btm_sec.c - btu
btu_hcif.c
btu_init.c
btu_task.c - gap
gap_api.c
gap_ble.c
gap_conn.c - gatt
att_protocol.c
gatt_api.c
gatt_attr.c
gatt_auth.c
gatt_cl.c
gatt_db.c
gatt_main.c
gatt_sr.c - hcic
hciblecmds.c
hcicmds.c - hid
hidh_api.c
hidh_conn.c - l2cap
l2c_api.c
l2c_ble.c
l2c_int.h
l2c_link.c
l2c_main.c - smp
smp_act.c
smp_api.c
smp_keys.c
smp_l2c.c
smp_main.c
- btm
utils:编译生成libbt-utils.so
六、Bluetooth 硬件
hardware/libhardware/include/* (添加和蓝牙相关的头文件)
hardware/broadcom/libbt :编译生成libbt-vendor.so
bt_vendor_brcm.c
conf.c
hardware.c
upio.c
userial_vendor.c
hardware/qcom/bt/libbt-vendor:编译生成libbt-vendor.so
bt_vendor_qcom.c
hardware.c
userial_vendor.c
注意:根据自己模组选择对应的厂家
七、Bluetooth的kernel层
kernel\drivers\bluetooth*
kernel\net\bluetooth*
linux系统上Bluetooth的核心代码,包括驱动
Android Bluetooth源码结构相关推荐
- 【Android 系统开发】Android框架 与 源码结构
一. Android 框架 Android框架层级 : Android 自下 而 上 分为 4层; -- Linux内核层; -- 各种库 和 Android运行环境层; -- 应用框架层; -- 应 ...
- android源码结构
android源码结构 Android 2.1 |-- Makefile |-- bionic (bionic C库) |-- bootable (启动引导相关代码) |-- build (存放系统编 ...
- android 系统源码分析
获得Android源码后,我们来分析源码结构.源码的全部工程分为如下三个部分. ①Core Project:核心工程部分,这是建立Android系统的基础,保存在根目录的各个文件夹中. ②Extern ...
- Android系统源码目录及功能介绍
Android的移植按如下流程: 1.android linux 内核的普通驱动移植,让内核可以在目标平台上运行起来. 2.正确挂载文件系统,确保内核启动参数和 android 源代码 ...
- android系统源码7.1.2_r8下载,编译,运行到nexus5X上,修改源码并编译SDK进行测试
一,学习android系统源码下载,编译的作用 1,可以自己 DIY 自己的rom系统,从系统层面,宏观的加深理解 android系统 2,编译自己的 userdebug(原生root权限) rom, ...
- 【流媒体开发】VLC Media Player - Android 平台源码编译 与 二次开发详解 (提供详细800M下载好的编译源码及eclipse可调试播放器源码下载)
作者 : 韩曙亮 博客地址 : http://blog.csdn.net/shulianghan/article/details/42707293 转载请注明出处 : http://blog.csd ...
- Android ADB 源码分析(三)
前言 之前分析的两篇文章 Android Adb 源码分析(一) 嵌入式Linux:Android root破解原理(二) 写完之后,都没有写到相关的实现代码,这篇文章写下ADB的通信流程的一些细节 ...
- Android Adb 源码分析
扭起屁股得意洋洋 最近,我负责的项目因为临近量产,把之前的userdebug版本关闭,转成了user版本,增加selinux的权限,大家都洋溢在项目准备量产的兴奋和喜悦之中不能自拔 谁知,好景不长,u ...
- Webrtc之源码结构
当把代码下载完,可以通过vs2017编译之后,特别兴奋,但是,当打开工程的时候,懵了.....看下图 再看工程项目 此刻的心情,,,,,低落到无语. 这位大神介绍了一下源码结构 https://blo ...
- 【Android SDM660源码分析】- 02 - UEFI XBL QcomChargerApp充电流程代码分析
[Android SDM660源码分析]- 02 - UEFI XBL QcomChargerApp充电流程代码分析 一.加载 UEFI 默认应用程序 1.1 LaunchDefaultBDSApps ...
最新文章
- str字符串 encoding( ) 方法
- twiiq开发随笔(2)
- Vue2.x-03使用vue-cli搭建Vue开发环境
- ITK:处理3D图像的2D切片
- IntelliJ IDEA+Mysql connecter/j JDBC驱动连接
- java xml接口实例化_Spring简介及xml配置
- mysql二级缓存,mybatis的动态sql和二级缓存
- android 拼图课程设计,拼图游戏设计_课程设计报告.docx
- Window10环境下的Jupyter notebook安装与打开默认路径的修改
- 释放千行百业数据价值,华为云DAYU有一套
- android实操--练习2
- windows 域的安装方法
- linux 快捷键回复禁用,Linux 禁用Ctrl+Alt+Delete重启服务器操作
- 基于LQR的车辆LKA算法设计
- win2012R2无法打开匿名级安全令牌,安装.net 3.5
- Compose Modifier
- 0.1+0.2 为什么不等于0.3
- Hexo 搭建博客提交百度 sitemap 抓取失败
- 跟随艺术家林曦的脚步 学习“只生欢喜不生愁”的生活态度
- 通过爬虫获取第五人格游戏信息整理并分析(一)
热门文章
- QQ、微信、QQ浏览器UserAgent
- python实时曲线绘制_python画曲线
- C++ WA, 超时,爆栈错误总结
- 荣耀v20屏幕测试软件,测量原来可以这么简单 荣耀V20 AR测量功能体验
- 声学测试软件ios,只需要 iPhone 就能进行声学测量,AcoustiTools 用 AR 帮你解决大声场环境的听感问题...
- drupal 电商网站_为什么小型企业应该为电子商务网站选择Drupal
- 软件性能测试和可靠性测试
- 易基因|3文解读:微量样本甲基化测序在肿瘤中的应用
- 现场总线技术笔记——3、通用串行端口的数据通信(RS232、RS485)
- 我的科幻评论——《星船伞兵》:海因莱茵最经典又最不典型之作,平凡人类勇气与责任的赞歌