一、概述
我们知道android8.0蓝牙架构如图,其中蓝牙进程通过JNI与蓝牙堆栈bluedroid通信,同时bluedroid向上层提供接口,总体流程是蓝牙进程通过JNI调用bluedroid提供的HAL接口来实际操作蓝牙,并设置java层回调传给HAL层,HAL层通过回调通知上层结果,下面分析android bluetooth源码(8.0)
二、每一层提供的接口
Apps通过Binder IPC与蓝牙进程(蓝牙系统服务)通信,蓝牙基本操作,如打开蓝牙,关闭蓝牙,发现设备等,是由蓝牙服务AdapterService实现的,AdapterService通过JNI接口调用蓝牙堆栈接口
JNI方法:/platform/packages/apps/bluetooth/jni/com_android_btservice_AdapterService.cpp
部分方法如下图
蓝牙堆栈提供的HAL层接口:如上图中JNI方法通过HAL提供的接口sBluetoothInterface与底层通信,sBluetoothInterface的类型是