android 4.0 蓝牙分析之二

本文深入解析Android 4.0中蓝牙的实现,从Settings应用的蓝牙设置菜单到蓝牙服务启动,再到设备发现、配对和连接的过程。涉及Bluetoothd daemon的初始化、系统服务的交互以及JNI、dbus消息传递等关键步骤。
摘要由CSDN通过智能技术生成

packages/apps/Settings/src/com/android/settings/bluetooth/BluetoothSettings.java

onCreateOptionsMenu(Menu menu, MenuInflater inflater)

创建菜单,里面有MENU_ID_SCANMENU_ID_RENAME_DEVICEMENU_ID_VISIBILITY_TIMEOUTMENU_ID_SHOW_RECEIVED

 

onOptionsItemSelected(MenuItem item)

菜单对应的执行操作

1Bluetoothd daemon

external/bluetooth/bluez/src/main.c

main

       |——init_defaults   填充main_opts

       |——g_option_context_new  下面四步是参数解析相关

       |——g_option_context_add_main_entries

       |——g_option_context_parse

       |——g_option_context_free

       |——daemon(0, 0) 参数为0,则将输出都定向到/dev/null

       |——__btd_log_init       打印一些log

       |——agent_init

              |——connection = dbus_bus_get (DBUS_BUS_SYSTEM, NULL)

       |——connect_dbus()

              |——g_dbus_setup_bus  注册dbus连接,并重命名为"org.bluez"

              |——manager_init(conn, "/")  设置base_path

                     |——g_dbus_register_interface 注册interface,包括medhod,signal

              |——set_dbus_connection(conn)  设置connectionconn

       |——start_sdp_server 初始化sdp协议

              |——init_server

                     |——创建l2cap_sock套接字

                     |——bind  l2cap_sock

                     |——listen  l2cap_sock

                     |——listen  unix_sock

              |——io = g_io_channel_unix_new(l2cap_sock)

              |——g_io_add_watch(io,, io_accept_event, &l2cap_sock) 等待对方connect

                     |——accept  l2cap_sock/unix_sock操作

       |——plugin_init

              |——执行plugin init

       |——g_main_loop_new

       |——adapter_ops_setup

              |——ops->setup()

       |——rfkill_init       电源操作

       |——g_main_loop_run

/**********************     main结束  ************************/

 

hciops_init

       |——btd_register_adapter_ops(&hci_ops, FALSE);

              |——g_slist设置,ops保存

 

hciops_setup

       |——socket(,SOCK_RAW, BTPROTO_HCI)

              |——hci_filter_set_ptype  HCI_EVENT_PKT/EVT_STACK_INTERNAL设置过滤

              |</

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值