Android系统蓝牙HAL分析

关键词:android, 蓝牙,中间件,驱动


应用层API

Android中为蓝牙的使用提供了一整套API:

  •  搜索其他蓝牙设备。
  • 查询适配设备。
  • 建立RFCOMM通道。
  •  通过发现服务连接其他蓝牙设备。
  •  交换数据。
  • 管理多项连接。

开启蓝牙(SettingUp Bluetooth)

1.       获得BluetoothAdapter

2.       开启蓝牙. 使用ACTION_REQUEST_ENABLE的Intent,并调用startActivityForResult()方法。

查找设备

设备搜索(Device Discovery)是一个扫描的过程,用来搜索本地开启蓝牙的设备。

查询配对设备

调用getBondedDevices()方法。该方法返回一个BluetoothDevice的集合来代表配对设备。

发现设备

执行startDiscovery()方法。该过程是异步的,该方法将会立刻返回一个布尔值表明搜索是否已经开始。应用程序必须使用ACTION_FOUNDd的Intent注册一个BroadastReceiver。该Intent用来接受每一个查找到设备的信息。对于每一个设备,系统将会广播ACTION_FOUND。

连接设备

一个设备一定会开启服务器Socket,而另一个进行连接(使用作为服务器端的MAC地址进行连接)。当客户端和服务器端彼此拥有一个在同一个RFCOMM通道已连接的BluetoothSocket时便可以进行数据的交换。如果两个设备之前并没有配对过,那么Android的框架将会自动进行配对的请求通知。

管理连接

当成功进行设备间的连接时,每一个设备都持有一个已连接的BluetoothSocket。这时终于可以进行数据的传输了。使用BluetoothSocket,数据的传输非常简单。通过getInputStream()以及getOutputStream()分别获得输入输出流。通过read(byte[]) 和 write(byte[]) 读写数据。

架构

Android系统蓝牙HAL分析_第1张图片
Android系统蓝牙HAL分析_第2张图片

Android蓝牙框架

Android系统蓝牙HAL分析_第3张图片

Bluez verystrong in Linux world. Bluedroid strong in Android world.

Profiles → collection ofServices

HAL接口

Android系统硬件抽象层(HardwareAbstraction Layer,HAL)是连接Android Framework与内核设备驱动的重要桥梁。其主要设计意图是向下屏蔽设备以及其驱动的实现细节,向上为系统服务以及Framework提供提供统一的设备访问接口。同时Google基于保护硬件厂商知识产权的考量,选择Apache开源许可证以避开GPL开源协议的约束,允许硬件厂商不公开源码,将设备相关的实现放在HAL层中实现并以共享库(.so)的形式提供。

WifiHAL框架

Android系统蓝牙HAL分析_第4张图片

HAL存在的原因

1. 并不是所有的硬件设备都有标准的linuxkernel接口

2. Kernel driver涉及到GPL的版权,某些设备制造商不愿意公开硬件驱动。

3. 对某些硬件,android有一些特殊的需求。

 

Android HAL软件设计中有两个概念(Module,Device)。Module代表整个HAL实现,是HAL模块类别、功能的封装,是外部程序能看到的唯一视角;Deivce代表着一个实际的硬件设备,是设备属性、设备操作的封装,设备提供的所有操作在Device结构中体现,Device由Module的open方法创建。

HAL开发规范hardware/libhardware/include/hardware/hardware.h

其中详细的介绍了HAL的开发规范以及核心的数据结构

1.         定义Module的数据结构

2.         定义Device的数据结构

3.         实现open方法

4.         实现device的具体操作接口

参考

http://blog.csdn.net/column/details/fang1021.html

 

Android经典蓝牙开发简介

http://www.jianshu.com/p/fc46c154eb77

Android Bluetooth(蓝牙)实例

http://www.yiibai.com/android/android_bluetooth.html

 

AndroidBluetooth Architecture: Overview



你可能感兴趣的:(软件,底层技术)