博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Android Bluetooth 分析(精)
阅读量:7071 次
发布时间:2019-06-28

本文共 2035 字,大约阅读时间需要 6 分钟。

 

一、 Bluetooth现状

(1)Android2.2版 支持的核心版本是Bluetooth 2.0 +EDR。

(2)Android 的蓝牙 使用了BlueZ协议栈,但只实现了Handset/Handfree和A2DP/AVRCP等Profile。

(一些常用的Profile(如HID/DUN/SPP/OPP/FTP/PAN等)在现在的Android2.2版中并没有实现。需要自己在Android中实现Profile)。

(3)目前版本(Android2.2) 只支持 绑定设备(bonded devices)之间通信,而不支持ad-hoc网络通信。

(4)目前版本(Android2.2) emulator(仿真器、模拟器)不支持蓝牙的调试,只能通过LOG和BlueZ带的工具来调试。

(5)Android2.0 API level5 之后的版本才支持Bluetooth。

(6)Android 的Bluetooth通信API是BlueZ 的RFCOMM的封装。

RfcommSocket 在 API level7 之后的版本才提供Bluetooth 的通信RfcommSocket 使用 的IputStream 和OutputStream对象

二、Android Bluetooth 架构

1、面向库的架构视图

2、面向进程的架构视图

LinuxKernel层:

bluez协议栈、uart驱动, h4协议, hci,l2cap, sco, rfcomm

Library层:

libbluedroid.so 等

Framework层:

实现了Headset /Handsfree 和 A2DP/AVRCP profile,但其实现方式不同Handset/Handfree是直接 在bluez的RFCOMM Socket上开发的,没有利用bluez的audio,而A2DP/AVRCP是在bluez的audio plugin基础上开发的,大大降低了实现的难度。

三、 BlueZ介绍

(详见http://www.bluez.org/):

BlueZ 是 OS开放的bluetooth 协议栈主要包括公司的BlueDrekar, Nokia公司的Affix, Axis公司的OpenBT和官方的协议栈BlueZ.

Bluetooth协议栈BlueZ分为两部分:内核代码和用户态程序及工具集。

内核代码:由BlueZ核心协议和驱动程序组 成;Bluetooth协议实

现在内核源代码 /net/bluetooth中。包括hci,l2cap,hid,rfcomm,sco,SDP,BNEP等协议的实现。驱动程

序放在 /driver/bluetooth中,包含Linux kernel对各种接口的Bluetooth device的驱动。例如:USB接口,串口等。

用户态程序及工具集:包括接口和BlueZ工具集。BlueZ提供函数库以及应用程序接口,便于程序员开发bluetooth应用程序。BlueZ utils是主要工具集,实现对bluetooth设备的初始化和控制。

四、几个术语:

HFP(Hands-free Profile)耳机模式:

让蓝牙设备可以控制电话,如接听、挂断、拒接、语音拨号等,拒接、语音拨号要视蓝牙耳机及电话是否支持。

HSP(Handset Profile)耳机模式

用于支持蓝牙耳机与移动电话之间使用

HID() 人机接口设备配置文件

HID 配置文件定义了 Bluetooth HID(如键盘、指向设备、游戏设备及远程监视设备)使用的协议、程序及功能

拨号网络配置文件 (DUN)

DUN 提供了通过 Bluetooth 无线技术接入 Internet 和其它拨号服务的标准。最常见的情况是在手机上拨号,从膝上型计算机以无线方式接入 Internet。

个人局域网配置文件 (PAN)

PAN 描述了两个或更多个 Bluetooth 设备如何构成一个即时网络,以及如何使用同一机制通过网络接入点接入远程网络。配置文件角色包括网络接入点、组即时网络及个人局域网用户。

SDP( Service Discovery Protocol )服务发现协议

提供应用程序在蓝牙环境中发现哪个服务可用和决定那些可用服务的特征。

GAP(Generic Access Profile)通用访问应用

一般访问应用规范定义了蓝牙设备如何发现和建立与其他设备的安全(或不安全)连接。它处理一些一般模式的业务(如询问、命名和搜索)和一些安全性问 题(如担保),同时还处理一些有关连接的业务(如链路建立、信道和连接建立)。GAP规定的是一些一般性的运行任务。因此,它具有强制性,并作为所有其它 蓝牙应用规范的基础。

转载于:https://www.cnblogs.com/yuzaipiaofei/archive/2012/08/28/4124166.html

你可能感兴趣的文章
1066 Root of AVL Tree
查看>>
时间戳转换
查看>>
问题集录--Java高级软件工程师面试考纲(转)
查看>>
TCL笔试题 将A,B,B,C,D,E,第三个字符不可以是E的所有组合输出;
查看>>
Mysql 数据库系列
查看>>
[C++基础]037_编写不可被继承的类
查看>>
C#_数据库基本交互
查看>>
CSS_样式sample
查看>>
Jordan标准形
查看>>
typeconfig.json配置说明
查看>>
bzoj3551 Peaks加强版
查看>>
phonegap工程中修改app的名字
查看>>
在Exchange数据库中删除指定邮件
查看>>
实例:接口并发限流RateLimiter
查看>>
vba 排序和复制指定区域到新的xls文件中
查看>>
std::strncpy 简介
查看>>
小学生四则运算算术题
查看>>
python并发编程之多进程
查看>>
2019.4.17 区块链论文翻译
查看>>
Loj #2494. 「AHOI / HNOI2018」寻宝游戏
查看>>