现在的位置: 首页 > 综合 > 正文

Android 蓝牙源码结构与协议简介

2018年02月15日 ⁄ 综合 ⁄ 共 4121字 ⁄ 字号 评论关闭

Android
蓝牙之设置应用源码分析

BluetoothDevicePreference.java

顾名思义,蓝牙设备首选项,也就是蓝牙设备的配置信息,比如是否连接,是否配对,是否可见等等。该类继承了preference类,主要是提供获取蓝牙设备及通知蓝牙设备配置信息变化。

 BluetoothDiscoverableEnabler.java

蓝牙搜索UI逻辑处理,包括搜索暂停,搜索恢复,及蓝牙开启关闭时的蓝牙搜索处理,以及搜索超时等处理。该类同时使用了broadcast与handle机制,用来处理搜索的状态变化。

 BluetoothEnabler.java

蓝牙功能的开启/关闭功能处理。

 BluetoothEventRedirector.java

蓝牙事件转发处理。通过使用broadcast机制,在onstart里面注册了蓝牙的事件权限。

 BluetoothNamePreference.java

监听蓝牙名字的变化

 BluetoothPairingDialog.java

是activity,配对时各种提示框及按键事件处理,如用户请求配对,密码输入,密码确认,同意等提示框。

BluetoothPairingRequest.java

配对的数据处理,为BluetoothPairingDialog.java提供数据支持,同时启动BluetoothPairingDialog.java activity当蓝牙应用在前台并且屏幕是亮的,否则通知系统需要弹出提示框(比如蓝牙后台提示,通过notification通知提示)。

 BluetoothPermissionActivity.java

允许连接的提示框处理

 BluetoothPermissionRequest.java

为BluetoothPermissionActivity.java提供数据支持,若蓝牙在前台并且屏幕是亮的,则启动BluetoothPermissionActivity.java activity,否则使用notification来提示通知。

 RequestPermissionActivity.java

询问用户是否开启蓝牙及蓝牙搜索,当前蓝牙状态如果是未开启状态,则开启蓝牙及蓝牙搜索;当前蓝牙如果是开启状态,则不处理;当只针对是否开启蓝牙时,则开启蓝牙并不开启蓝牙搜索。

 RequestPermissionHelperActivity.java

询问用户是否开启蓝牙及蓝牙搜索,一般由RequestPermissionActivity.java启动。

 SettingsBtStatus.java

蓝牙各种状态的资源显示

 BluetoothSettings.java

蓝牙设置应用,蓝牙状态变化及设备绑定信息处理等。各个菜单处理主要是通过CachedBluetoothDevice.java来实现。主要有添加蓝牙设备,删除蓝牙设备,点击获取蓝牙设备信息,及创建具体蓝牙设备的菜单等。

  ConnectSpecificProfilesActivity.java

蓝牙设备耳机、A2DP、SAP相关的设置处理

  DockService.java

蓝牙Dock相关服务,配置信息的修改,连接的修改等。

 DockEventReceiver.java

接收各种dock事件,并启动DockService服务。并提供一个结束服务方法。

 CachedBluetoothDevice.java

提供蓝牙设备的各种属性信息以及提供蓝牙设备连接,配对等方法。

  CachedBluetoothDeviceManager.java

管理蓝牙设备,包括增加、删除蓝牙设备及通知

 

LocalBluetoothManager.java

提供了一系列蓝牙方法,如开始扫描、结束扫描逻辑处理。

Android
蓝牙之通话应用相关源码分析

BluetoothAtPhonebook.java

通过AT命令帮助管理电话本显示

 BluetoothCmeError.java

扩充的AT命令错误编码

 BluetoothHandsfree.java

通话中蓝牙耳机,蓝牙免提的管理

 BluetoothHeadsetService.java

提供蓝牙耳机,蓝牙免提profile

 

 

Android
蓝牙之OPP学习

BluetoothOppLauncherActivity.java

其他应用启动蓝牙的入口。比如通过蓝牙发送功能。发送功能分为发送文件/多个文件/内容三种模式。发送内容的时候,会新建一个临时文件夹来保存发送的内容。发送文件的路径都会保存到数据库中。当蓝牙未启动,则启动BluetoothOppBtEnableActivity.java激活蓝牙,否则启动BluetoothOppReceiver.java处理。

 BluetoothOppBatch.java

存储并提供一些方法,关于OPP服务共享的传输信息。

 BluetoothOppBtEnableActivity.java

询问是否开启蓝牙提示框

 BluetoothOppBtEnablingActivity.java

蓝牙开启进度条处理,包括正常结束和按键取消结束。

 BluetoothOppBtErrorActivity.java

异常提示框,标题及内容由启动该activity提供。

 BluetoothOppIncomingFileConfirmActivity.java

询问用户是否接收对方发过来的文件

 BluetoothOppL2capListener.java

创建L2CAP连接监听线程

 BluetoothOppLiveFolder.java

创建Live文件夹

 BluetoothOppManager.java

蓝牙服务层OPP接口。管理蓝牙发送的一些共享数据

 BluetoothOppNotification.java

蓝牙发送/接收的提示框处理,如用户确认发送接收,发送接收完成等。

 BluetoothOppPreference.java

蓝牙设备名字及OBEX的配置信息

 BluetoothOppProvider.java

针对SHARES SHARES_ID LIVE_FOLDER_RECEIVED_FILES
三种情况对DB进行插入,更新,删除等操作。

 BluetoothOppReceiveFileInfo.java

存储蓝牙接收文件的信息。生成一个唯一的文件名称,避免冲突覆盖。同时在生成文件前做了一些空间是否足够,是否存在外接存储器等判断。

 BluetoothOppReceiver.java

接收一些OPP的广播消息

 BluetoothOppRfcommListener.java

创建RFCOMM连接监听

 BluetoothOppSendFileInfo.java

存储发送的文件信息

 

 蓝牙技术之A2DP

A2DP

Advanced Audio Distribution Profile
蓝牙音频传输模型协定

A2DP是能够采用耳机内的芯片来堆栈数据,达到声音的高清晰度。有A2DP的耳机就是蓝牙立体声耳机。声音能达到44.1kHz(CD音质:16bits 44.1kHz),一般的耳机只能达到8kHz(Handsfree profile:8bits 8kHz)。

 A2DP详细技术文档下载地址:A2DP_SPEC_V12.pdf

蓝牙规范-维基百

蓝牙技术之AVRCP

AVRCP

Audio/Video Remote Control Profile
音频/视频远程控制配置文件

AVRCP
设计用于提供控制TV、Hi-Fi设备等的标准接口。此配置文件用于许可单个远程控制设备(或其它设备)控制所有用户可以接入的A/V设备。它可以与 A2DP 或 VDP 配合使用。

  AVRCP
定义了如何控制流媒体的特征。包括暂停、停止、启动重放、音量控制及其它类型的远程控制操作。AVRCP 定义了两个角色,即控制器和目标设备。控制器通常为远程控制设备,而目标设备为特征可以更改的设备。在 AVRCP 中,控制器将检测到的用户操作翻译为 A/V 控制信号,然后再将其传输至远程 Bluetooth 设备。对于“随身听”类型的媒体播放器,控制设备可以是允许跳过音轨的耳机,而目标设备则是实际的播放器。常规红外遥控器的可用功能可以在此协议中实现。

  AVRCP
协议规定了AV/C 数字接口命令集(AV/C 命令集,由1394 行业协会定义)的应用范围,实现了简化实施和易操作性。此协议为控制消息采用了AV/C 设备模式和命令格式,这些消息可以通过音频/视频控制传输协议 (AVCTP) 传输。

 

AVRCP协议详细文档地址:Bluetooth AVRCP Spezifikation
V1.
4

蓝牙技术之HSP

HSP

headset profile
耳机配置文件

描述了 Bluetooth
耳机如何与计算机或其它 Bluetooth 设备(如手机)通信。连接和配置好后,耳机可以作为远程设备的音频输入和输出接口。

  这是最常用的配置,为当前流行支持蓝牙耳机与移动电话使用。 它依赖于在64千比特编码的音频/ s的CVSD的或PCM以及AT命令从GSM 07.07的一个子集,包括环的能力最小的控制,接听来电,挂断以及音量调整。描述了Bluetooth 耳机如何与计算机或其它 Bluetooth 设备(如手机)通信。连接和配置好后,耳机可以作为远程设备的音频输入和输出接口。

 HSP详细技术文档地址:6_headset.pdf

蓝牙技术之HFP

HFP

hands free profile
耳机免提功能

支持HFP的蓝牙耳机指耳机具有免提功能,用户可以在耳机上操作手机设定好的重拨、来电保留、来电拒听等免提选项功能。

 HFP技术详细文档:HFP_1.5_SPEC_V10.pdf

蓝牙技术之OPP

OPP

Object push profile 对象推送协议

蓝牙在OBEX基础上的一个专属协议,它用于资源在设备间的共享传输。比如用户可以从一个蓝牙手机上将音乐PUSH到另外一个手机上。

 

OPP协议详细地址:OPP_SPEC_V12r00.pdf

蓝牙技术之SDP

SDP

Service Discovery Protocol 服务发现协议

 

 

 

抱歉!评论已关闭.