在上节中我们仔细分析了蓝牙文件传输过程中涉及到的UI界面,最终定格在蓝牙设备扫描的界面,我们只要选择自己想要传输的蓝牙设备就可以进行蓝牙文件的传输了。那就是这样一个简单的设备选择的点击会引发哪些连锁的操作呢?本节就来详细进行分析。 1.1.设备点击的action和响应       我们先来回顾一下,最后蓝牙设备的扫描界面是在DevicePickerFragment.java这个文件中实现的,目录是/packages/apps/Settings/src…

2014年3月6日 0条评论 3点热度 阅读全文

蓝牙文件的传输是蓝牙中的一个很重要的应用,本文就来分析一下这个流程中涉及的一些UI操作。 1、  蓝牙图标的出现 我们在发送文件的时候第一步就是点击分享按钮后跳出一个如图1所示的对话框。这里就可以选择我们通过什么进行分享。                         &nbs…

2014年2月20日 0条评论 3点热度 阅读全文

       在前面两篇文章中,晓东和大家一起分析了android是如何向蓝牙发送扫描命令的,这篇文章我们将继续来看,蓝牙在收到扫描命令之后是如何向android上层反馈搜索到的设备以及上层对这些搜索到的设备是如何进行进一步处理的。 7、inquiry result event的分析          Inquiry result的意思大概就是在收到inquiryrespons…

2013年12月11日 0条评论 7点热度 阅读全文

作为一个程序员,咋废话就不多说了,直接看代码吧,哈哈~~   2)adapter的初始化 gboolean adapter_init(struct btd_adapter *adapter) { int err; /* adapter_ops makes sure that newly registered adapters always * start off as powered */ //置up位,为什么不放到最后在置位啊 adapter->up = TRUE; //读bdaddr,这个就是得…

2013年11月20日 0条评论 9点热度 阅读全文

在bluez启动过程中,各种插件的初始化尤为重要,没有这些插件,很多功能将无法实现。 2.3.5 plugin的初始化 插件的初始化,是什么的干活,其实还是很重要的,我们来看看吧。 gboolean plugin_init(GKeyFile *config, const char *enable, const char *disable) { GSList *list; GDir *dir; const gchar *file; char **conf_disabled, **cli_disabled, **cli…

2013年10月31日 0条评论 2点热度 阅读全文

SDP server是蓝牙启动过程中的一个非常重要部分。本文简单介绍一下这个函数的实现。 int start_sdp_server(uint16_t mtu, const char *did, uint32_t flags) { //这里传入的flags是SDP_SERVER_COMPAT //所以compat值是有效的,master应该是0 int compat = flags & SDP_SERVER_COMPAT; int master = flags & SDP_SERVER_MASTER;…

2013年10月28日 0条评论 2点热度 阅读全文

本篇文章将会从总体流程上解释一下每一个函数的意义,具体的每一个函数的解释将是一个很长的过程,后面的文章中我将会针对每一个有意义的函数来具体分析。 在具体分析bluetoothdservice的启动之前,我们先来看一下bluetoothd service究竟是什么,他同样定义在init.rc中: servicebluetoothd /system/bin/bluetoothd -n          所以,很清楚,他就是执行bluetoo…

2013年10月23日 0条评论 4点热度 阅读全文

在蓝牙中,host和controller之间的command和event的交互是底层各种工作开展的基础,在初始化的过程中必然也存在着类似的操作。本章会详细分析在hci_init_req过程中所涉及到的所有command和event的交互。至于command和event的格式意义,请参见bluetooth的core spec,这里不做详细介绍,若想详细了解,spec的研读是必不可少的。 static void hci_init_req(struct hci_dev *hdev, unsigned long opt) …

2013年10月22日 0条评论 3点热度 阅读全文