欢迎来到天天文库
浏览记录
ID:37942894
大小:389.48 KB
页数:7页
时间:2019-06-03
《基于Android的蓝牙A2DP功能的实现》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库。
1、http://www.paper.edu.cn基于Android的蓝牙A2DP功能的实现王巍北京邮电大学计算机科学与技术学院,北京(100876)E-mail:zeus-wang@163.com摘要:蓝牙(Bluetooth)技术是一种低成本的无线数据与数字通信的开放性全球规范。Android是Google于2007年11月5日宣布的基于Linux平台开源手机操作系统名称,该平台由操作系统、中间件、用户界面和应用软件组成,号称是首个为移动终端打造的真正开放和完整的移动软件。本文通过研究蓝牙无线通信协议栈,在Android手机平
2、台上设计并实现了蓝牙立体声耳机收听高保真音乐的功能(即A2DP应用框架的实现)。关键词:蓝牙;A2DP;Android中图分类号:1.引言蓝牙(Bluetooth)技术规范由蓝牙特别兴趣小组(SIG)制订,在使用通用无线传输模块和数据通信协议的基础上,开发交互式服务和应用,多用于便携式通信设备。蓝牙规范包括核心协议与应用框架(profiles)两个文件。协议规范部分定义了蓝牙的各[1]层通信协议,应用框架只出了如何采用这些协议实现具体的应用产品。蓝牙协议规范遵循开放系统互联参考模型(OpenSystemInterconnect
3、ion/ReferencedModel,OSI/RM),从低到高地定义了蓝牙协议栈的各个层次,如图1。TCP/IP服务AT对象交换发现指令协议点对点协协议AVCTPAVDTP集OBEX议(PPP)SDP网络封装协议音频串口仿真(RFCOMM)(BNEP)Audio逻辑链路控制与适配协议(L2CAP)主机控制器接口(HCI)链路管理器协议(LinkManagerProtocol)基带与链路控制(Baseband&LinkController)射频(Radio)图1蓝牙协议栈体系结构逻辑链路控制与适配协议以下的协议都是蓝牙无线通信
4、的核心协议,为蓝牙通信提供无连接与面向连接的数据通道。串口仿真协议将很容易地实现有具有电缆的串行通信应用模型向无线串行通信领域的转移。服务发现协议服务发现协议(SDP)是蓝牙技术框架中非常重要-1-http://www.paper.edu.cn的一个部分,它是所有应用模型的基础。任一蓝牙应用模型的实现都是利用某些服务的结果。在设备之间组网的基本动机就是使这些设备相互通信,并且获得彼此的服务。其他协议都是[2]蓝牙应用协议,本文就是在AVDTP(音视频发布传输协议)基础上实现A2DP的功能。2.开发平台及Android系统文本的
5、硬件平台是以Mavell公司的Tavor平台为基础,Tavor平台包换两各部分:应用程序子系统和通信子系统。其中XscaleCPU(624MHz)用于应用程序子系统,ARMCPU(34.67MHzto208MHz)与MSAcore(52MHzto312MHz)一同专门处理通信模块子系统,当手机处于待机状态时,XScaleCPU会处于休眠状态以节省电量,两个CPU使用自己的DDR内存,通信通过MSL串行总线。蓝牙芯片通过串口与XScale相连。2.1音频系统如图2,蓝牙芯片(WLAN/Bluetooth88W8688,串口连接最
6、大3.6Mbps,64-byteFIFOs)作为外设有两条数据通路,一条是SSP3串行接口用于语音通信PCM数据的收发,用于创建SCO链路。另一条是和串口控制器的连接用于ACL数据分组的收发以及以数据分组为基础的其他应用。I2C总线用与控制音频解码芯片进行选路的操作(声音从哪里出来,喇叭,有线耳机或蓝牙设备)。SSP2接口是音频数据传送的通道。图2音频系统与蓝牙通路-2-http://www.paper.edu.cn2.2Android系统Android是一个为移动设备设计的软件平台,包括操作系统、中间件和一些关键应用。目前发
7、布的AndroidSDK提供了必须的工具和进行应用开发所必须的API,在Android上的开发使用Java语言。开发者开发自己的应用时可以调用核心应用所使用的相同的API接口。这个应用程序架构被设计用来简化组件的重用;任何应用都可以宣布它的功能,其他的任何应用都可以使用这些功能。相同的机制允许组件被用户替换。Android包括了一套C/C++库,这些功能是通过Android应用框架提供给开发者的。每个Android应用程序在它自己的进程中运行,有它自己的Dalvik虚拟机的实例。Dalvik已经被改写过,使得一个设备可以有效得
8、运行多个VM。Dalvik虚拟机运行自己独特的可执行文件格式--.dex,该格式经过优化,使用尽量少的内存。Dalvik虚拟机依赖LinuxKernel提供底层功能支持,如线程、底层内存管理。Android依赖Linux内核2.6提供核心系统服务,比如安全、内存管理、进程管理
此文档下载收益归作者所有