Android蓝牙的启动

2019-07-14 00:05发布

Android中蓝牙是通过system/bluetooth/bluedroid/bluetooth.c启动的。在这个文件中主要的函数完成的功能为: <1> 检查蓝牙电源状态,和打开蓝牙电源 <2> 启动蓝牙,其中调用了1 <3> 关闭蓝牙
电源的状态是通过rfkill文件状态来标示的。在我们的平台没有rfkill。 在文件中直接屏蔽掉和蓝牙电源相关的函数。 主要的函数就剩下 bt_enable 和 bt_disable了。 
在bt_enable中,首先使用property_set函数开启hciattach服务。然后HCIDEVUP,最后执行property_set函数开启hcid服务。
hciattach在init.rc中是没有的,手动添加 
service hciattach /system/bin/hciattach -n /dev/ttyS1 any 38400 flow      user root      disabled      oneshot
注意: -n 这个选项很重要必须添加。否则,hciattach服务是不能启动的。
现在通过UI界面就可以启动蓝牙了