android bluez 编译,011-Android平台开发-Bluez function porting-蓝牙功能移植

本文围绕Android Bluez展开,介绍了编译配置支持,如在BoardConfig.mk中添加相关配置;阐述了启动hciattach及dbus daemon的方法;说明了Bluez控制流程,包括UI入口、各层调用及启动流程;还介绍了Bluetooth的结构,涵盖JAVA层、JNI层、bluez库和硬件适配层。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一、Bluez编译配置支持

在BoardConfig.mk中添加:

BOARD_HAVE_BLUETOOTH := true。

二、启动hciattach

BlueZ核心子系统使用hciattach守护进程添加指定的硬件串口驱动。

修改init.rc来启动hciattach:

service hciattach /system/bin/hciattch -n -s 115200 /dev/ttyS2 bcm2035 115200

user bluetooth

group bluetooth net_bt_admin

disabled

同时也要启动dbus daemon,因为bluez需要dbus与其它进程通讯的。

三、Bluez控制流程

class bluetoothsetting是UI的入口,通过按button scan进入搜索状态,

applicaton层调用bluetoothdevice, 接着就是bluetoothservice的调用,

bluetoothservice调用native方法,到此全部的java程序结束了。

下面的调用都是JNI, cpp实现的。android_server_bluetoothservice.cpp里面实现了native

方法,最终通过dbus封装,调用 HCID deamon 的function DiscoverDevice。

Bluetooth的启动流程是:

1.  打开蓝牙电源,通过rfkill来enable;(system/bluetooth/bluedroid/bluetooth.c)

2.  启动service hciattch -n -s 115200 /dev/ttyS2 bcm2035 115200;

3.  检测HCI是否成功(接受HCIDEVUP socket来判断或hciconfig hci0 up);

4.  hcid deamon start up。

四、Bluetooth结构

1、JAVA层

frameworks/base/core/java/android/bluetooth/

包含了bluetooth的JAVA类。

2、JNI层

frameworks/base/core/jni/android_bluetooth_开头的文件

定义了bluez通过JNI到上层的接口。

frameworks/base/core/jni/android_server_bluetoothservice.cpp

调用硬件适配层的接口system/bluetooth/bluedroid/bluetooth.c

3、bluez库

external/bluez/

这是bluez用户空间的库,开源的bluetooth代码,包括很多协议,生成libbluetooth.so。

4、硬件适配层

system/bluetooth/bluedroid/bluetooth.c

包含了对硬件操作的接口

system/bluetooth/data/*

一些配置文件,复制到/etc/bluetooth/。

还有其他一些测试代码和工具。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值