android培训课件11_android的连接部分

上传人:w****i 文档编号:106182794 上传时间:2019-10-14 格式:PDF 页数:38 大小:474.36KB
返回 下载 相关 举报
android培训课件11_android的连接部分_第1页
第1页 / 共38页
android培训课件11_android的连接部分_第2页
第2页 / 共38页
android培训课件11_android的连接部分_第3页
第3页 / 共38页
android培训课件11_android的连接部分_第4页
第4页 / 共38页
android培训课件11_android的连接部分_第5页
第5页 / 共38页
点击查看更多>>
资源描述

《android培训课件11_android的连接部分》由会员分享,可在线阅读,更多相关《android培训课件11_android的连接部分(38页珍藏版)》请在金锄头文库上搜索。

1、 Android 的连接部分 Android 的连接部分 第一部分 WIFI 部分 第二部分 蓝牙部分 第三部分 GPS 和定位部分 第一部分 WIFI 部分 Wifi ( Wireless Fidelity ),是 使用了 IEEE 的 802.11 协议的无线局域网 ( Wlan )技术。 在 android 中 Wifi 包括 kernel 的支 持和用户空间的程序和库两个部分。 第一部分 WIFI 部分 1.1 WIFI 的基本架构 1.2 WIFI 的本地实现 1.3 WIFI 的 JNI 和 JAVA 层次 1.4 Setting 中的 WIFI 设置 1.5 WIFI 的流程 1

2、.1 WIFI 的基本架构 Wifi 用户空间的程序和库: external/wpa_supplicant 生成库: libwpaclient.so 生成守护进程: wpa_supplicant Wifi 管理库: hardware/libhardware_legacy/wifi/ Android 的 WIFI 系统的 JNI 的部分: frameworks/base/core/jni/android_net_wifi_Wifi.c pp WIFI 系统的的 JAVA 部分实现代码: frameworks/base/services/java/com/android/server / fram

3、eworks/base/wifi/java/android/net/wifi/ 1.1 WIFI 的基本架构 Wifi的内核驱动程序 wpa_supplicant程序 WPA适配层 C框架层 .wifi包 JAVA框架层 JAVA应用层Settings, WifiSwitcher等应用 内核空间 WIFI的JNI Client调用方式 1.2 WIFI 的本地实现 Android 的 WiFi 本地实现部分主要包括 wpa_supplicant 以及 wpa_supplicant 适 配层。 WPA 是 WiFi Protected Access 的缩写 ,中文含义为“ WiFi 网络安全存取

4、”。 WPA 是 一种基于标准的可互操作的 WLAN 安全性增强解 决方案,可大大增强现有以及未来无线局域网系 统的数据保护和访问控制水平。 1.2 WIFI 的本地实现 wpa_supplicant 1.2 WIFI 的本地实现 wpa_supplicant 适配层是通用的 wpa_supplicant 的封装,在 Android 中作为 WIFI 部分的硬件抽象层来使 用。 wpa_supplicant 适配层主要用于封装与 wpa_supplicant 守护进程的通信,以提供给 Android 框架使用。它实现了加载,控制和消息监控等功能。 wpa_supplicant 适配层的头文件如

5、下所示: hardware/libhardware_legacy/include/hardware_legacy/wifi.h 1.3 WIFI 的 JNI 和 JAVA 层次 wpa_supplicant 适配层是通用的 wpa_supplicant 的封装,在 Android 中作为 WIFI 部分的硬件抽象层来使 用。 wpa_supplicant 适配层主要用于封装与 wpa_supplicant 守护进程的通信,以提供给 Android 框架使用。它实现了加载,控制和消息监控等功能。 wpa_supplicant 适配层的头文件如下所示: hardware/libhardware_l

6、egacy/include/hardware_legacy/wifi.h 1.3 WIFI 的 JNI 和 JAVA 层次 WifiNative WifiMonitor Client WifiStateTracker WifiManager WifiWatchdogService IWifiManager.StubIWifiManager.Stub.Proxy WifiLayer.Callback WifiLayer WifiEnable WifiSettings 1.5 WiFi 工作流程实例 1 开启 WiFi 用户在设置界面开启 WiFi ,调用 Settings 应用程 序的 Wifi

7、Enabler.setWifiEnabled ,然后调用 WifiManager.setWifiEnabled 。 WifiManager.setWifiEnabled 通过 Binder 机制调 用 WifiService.setWifiEnabled 。这里的 WifiService 也就是 WiFi 的 Java 层的内容。 WifiService.setWifiEnabled 将 MESSAGE_ENABLE_WIFI 消息发送到自己的消息队 列。 1.5 WiFi 工作流程实例 WifiService 通过 WifiHandler 的 handleMessage 处理 MESSAGE

8、_ENABLE_WIFI 。另外,它还完成一些初始工 作,如设置当前状态、加载 WiFi 驱动、开启 wpa_supplicant 、开启 WifiStateTracker 、注册 BroadcastReceiver 监视 WifiStateTracker 的消息等。 由于 WifiEnabler 初始化时注册了 BroadcastReceiver ,因此它会获得这个通知消息,进入 handleWifiStateChanged 处理一些内部状态以及显示。 WifiLayer 也同样获得了这个通知消息,至此, WiFi 开 启完成。随后它的做法是查找 AP 。 1.5 WiFi 工作流程实例 2

9、 查找 AP WiFi 查找 AP 的过程如下所示: Settings 应用程序的 WifiLayer.attemptScan 调用 WifiManager.startScan 。 Settings 应用程序的 WifiManager.startScan 通过 Binder 机制调用 WifiService.startScan 。 WiFi 服务层的 WifiServiceWifiNative.scanCommand 通过 WifiNative 发送扫描命令给 wpa_supplicant ,中间经过 JNI 实现 中的 doCommand ,最终调用 wap_supplicant 适配层 的

10、 wifi_command 来完成这一发送过程。至此,命令发 送成功。 1.5 WiFi 工作流程实例 命令的最终响应由 wap_supplicant 上报“ SCAN- RESULTS” 消息, WifiStateTracker 开启的 WifiMonitor 的 MonitorThread 可以获取此消息并交由 handleEvent 处理。 handleEvent 的处理方式是调用 WifiStateTracker.notifyScanResultsAvailable 。 在 WifiStateTracker 中,通过 EVENT_SCAN_RESULTS_AVAILABLE 完成消息传

11、递,调用 sendScanResultsAvailable 将 SCAN_RESULTS_AVAILABLE_ACTION 通知消息广播出去。 WifiLayer 会最终获得这个通知消息,调用 handleScanResultsAvailable 继续处理。此函数会根据返回的 AP 数据建立对应的处理结构,并完成对应界面的绘制,以供 用户操作 AP 列表。至此, AP 查找完成,也完成了一次典型 的自上而下、再自下而上的情景。 1.5 WiFi 工作流程实例 3 连接 AP WiFi 连接 AP 的步骤如下所示: 单击 AP 列表的某个项目后,会弹出 AccessPointDialog 对话框

12、, 单击“连接”按钮,将 handleConnect 转化为到 WifiLayer.connectToNetwork 的调用。 在 connectToNetwork 中完成一些查找和配置,再通过 managerEnableNetwork 调用 WifiManager.enableNetwork 。 连接的中间流程与查找 AP 的流程类似,都经过了 WifiMonitor 对 “ CONNECTED” 消息响应的捕获,以及 WifiStateTracker 对 EVENT_SUPPLICANT_STATE_ CHANGED 的处理。还有一个比较重 要的步骤是 WifiStateTracker 通

13、过对 DHCP 服务器的申请进行了 IP 地 址分配。最终会广播 NETWORK_STATE_CHANGED_ ACTION 消息 ,由 WifiLayer 响应。 第二部分 蓝牙部分 2.1 蓝牙部分的结构 2.2 Bluez 2.3 Bluez 的适配层 2.3 蓝牙的 JNI 和 JAVA 部分 2.1 蓝牙部分的结构 蓝牙 (Bluetooth) 技术,实际上是一种 短距离无线电技术。 在 Android 中蓝牙除了 kernel 的支 持,还需要用户空间的 bluez 的支持。 external/bluez/ Android 蓝牙设备管理的库: system/bluetooth/ 分

14、别生成 libbluetooth.so 和 libbluedroid.so 。 2.4 蓝牙的 JNI 和 JAVA 部分 Bluetooth 的 JNI 到上层的接口 , 目录 frameworks/base/core/jni/ 中的 android_bluetooth_*.cpp Bluetooth 的 JAVA 类: frameworks/base/core/java/android/bluetooth 2.1 蓝牙部分的结构 内核空间 用户空间 C框架层 android.bluetooth包 中的各个类 JAVA框架层 JAVA应用层 蓝牙Settings 蓝牙协议层 bluez bl

15、uez适配层 Headset/Handsfree 电话相关 D-BUS Sco,Rfcomm Socket 蓝牙驱动(UART, USB) HCI等socket 2.2 Bluez Android 所采用的蓝牙用库空间的库是 bluez 。它是 一套 Linux 平台的蓝牙协议栈完整开源实现,广泛用在 各 linux 发行版,并被移植到众多移动平台上。在 Android 中, bluez 提供了很多分散的应用,包括守护进 程和一些工具。 bluez 通过 D-BUS IPC 机制来提供应用层接口。 2.2 Bluez 2.2 Bluez 2.3 Bluez 的适配层 bluez 在 Andro

16、id 中使用,需要经过 Android 的 bluez 适配层的封装, bluez 适配层源代码及头文件路径如下所 示: system/bluetooth/ 该目录除了包含生成适配层库 libbluedroid.so 的源码之 外,还包含 bluez 头文件, bluez 配置文件等目录。 由于 bluez 使用 D-BUS 作为与上层沟通的接口,适配 层构造比较简单,封装了蓝牙的开关功能,以及射频开 关。 2.4 蓝牙的 JNI 和 JAVA 部分 在 Android 中还定义了 Bluetooth 通过 JNI 到上层的接口 , 在目录 frameworks/base/core/ jni/ 中。 android_bluetooth_BluetoothAudioGateway.cpp android_bluetooth_common.cpp android_bluetooth_Database.cpp android_bluetooth_ScoSocket.cpp android_blueto

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 高等教育 > 大学课件

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号