蓝牙耳机功能,也就是bluetooth headset /headfree profile,实现起来比想象的复杂.早期的蓝牙规范只定义了headset的profile, headset的实现原理,是在hci层之上扩展一个接口,传输sco同步面向连接的音频数据包.限定音频流只能是单声道8k的话音级别的pcm. 随着需求发展,明显已经不能满足了,于是又补充了a2dp协议.a2dp协议在l2cap上层,使用sbc压缩并使用acl异步数据包传输,可以支持cd级别的音频流.但是wince5并不支持a2dp,要wince6才有.上面2种都是透过hci层来传送音频流,这意味着还要受到hci总线带宽的限制.hci接口常见的有uart,spi,usb.为了突破这个限制,有一些设备会使用独立的pcm总线来传音频流.比如csr的芯片就有独立的pcm总线.我们的设计中,将蓝牙芯片的pcm接到了音频芯片的pcm,这提供了最大的灵活性.
如果你想实现headset,那么就要使用AG(audio gateway)服务btagsvc.dll,并且创建一个蓝牙音频驱动btscosnd.dll.在你的应用中使用DeviceIoControl发送IOCTL_AG_OPEN_AUDIO给AG服务,继而,AG服务会建立sco连接并使用waveOutMessage()发送WODM_BT_SCO_AUDIO_CONTROL给蓝牙音频驱动.蓝牙音频驱动于是建立了对hci层的连接,透过参数告知hci要处理的是sco数据,最后创建了一个线程处理sco的事件.
这个过程不会很顺利,一般会遇到一些问题.尤其是自己板上已经有另外一个音频设备的时候.在google中搜索你会体会到很多人在解决这个坎坷的问题.哪些问题呢?假设板载的音频设备是device0,在透过wave api来使用驱动时候,希望使用device1,却无法成功.这个问题是微软造成的.上面提到AG会使用waveOutMessage发消息给音频驱动,,waveOutMessage的发送对象竟然是固定的0.也就是device0.所以这限制了蓝牙音频驱动必须是device0.如何决定谁成为device0呢?并不是注册表中的Index项,那只是决定了WAV0还是WAV1.答案是order项.因此,本质就是,第一个被加载的音频驱动才是device0. (补充:MS在08年的NavReady中修正了这个bug。)
通过以上方法,成功在wince5上实现了蓝牙headset profile.但是音质的确不很满意.
===================================================================================
认识A2DP
A2DP全名是Advanced Audio Distribution Profile 蓝牙音频传输模型协定! A2DP是能够采用耳机内的芯片来堆栈数据,达到声音的高清晰度。有A2DP的耳机就是蓝牙立体声耳机。声音能达到44.1kHz,一般的耳机只能达到8kHz。如果手机支持蓝牙,只要装载A2DP协议,就能使用A2DP耳机了。还有消费者看到技术参数提到蓝牙V1.0 V1.1 V1.2 V2.0——这些是指蓝牙的技术版本,是指通过蓝牙传输的速度,他们是否支持A2DP具体要看蓝牙产品制造商是否使用这个技术。
A2DP定义了ACL(Asynchronous Connectionless 异步无连接)信道上传送单声道或立体声等高质量音频信息的协议和过程.
A2DP取决于GAP(Generic Access Profile 通用接入协议)和GAVDP(Generic Audio /Video Distribution Profile 通用音视频分布协议).后者定义音频,视频流等建立所需要的过程.A2DP则定义建立音视频流所需要的参数和流程.
A2DP的应用一:蓝牙立体声耳机 + 手机
蓝牙立体声耳机+手机,除了具有一般的语音通话功能外,最大的特点是可以直接通过蓝牙立体声耳机听手机中所播放的音乐。而市面上内置 A2DP模式的手机,目前有HP h6315(6365)及Motorola E680i两款智能手机,搭配蓝牙立体声耳机后(例如:I.Tech.Clip.S,I.Tech.Clip.S35等),都可以直接聆听手机中的音乐!
除了手机内置A2DP之外,采用Symbain Series 60操作系统的手机,如Nokia 7610、6670、3230、6680、6630、N-Gage、QD等等NOKIA S60手机及 Panasonic X700、X800...等,知名蓝牙厂商iTec特别附赠BluePlayer程序(目前有三个版本,1、对应6630、6680等,2、对应QD、N-Gage,3、对应其他S60界面的手机),可以使Series 60手机支持 A2DP模式,同样享受音乐的“无线”快感。
A2DP的应用二:蓝牙立体声耳机+个人电脑
随著蓝牙设备的普及,越来越多个人及笔记本电脑,也开始内置蓝牙装置。而电脑端上的蓝牙应用,可以说是类型最多的,无论是打印机、鼠标键盘的连接,甚至是PDA和手机的同步,都可以透过蓝牙装置进行。目前在个人电脑上最Hot的应用就属用蓝牙耳机讲Skype,只要将电脑安装上蓝芽接收器,并安装驱动程式后,就可以进行蓝牙的配对使用,解决有线装置线路繁乱的困扰。
蓝牙立体声耳机推出后,除了可以用来进行Skype通话外,还可以用耳机来听电脑中的音乐,无论电脑中的蓝牙接收器规格是1.1版本或是1.2版,只要更新到支持A2DP模式的驱动程序后 (WIDCOMM 需要4.0版本以上才支持,IVT需要1.4版本以上), 就可以支持蓝牙耳机提供的立体声音效输出,让使用者能体验“声”临其境的感觉,也不用担心喇叭会干扰到其他人。
A2DP的应用三:蓝牙立体声耳机+音乐播放器
如果你的手机没有支持蓝牙A2DP,但是你又想利用蓝牙耳机听取音乐,也有厂商推出了适用于3.5 mm耳机插头的HiFi蓝牙传输装置(Blue Con35)。只要有3.5 mm耳机接头的音乐播放装置,如iPod、MP3 Player、家用音响或是收音机,都可以直接转换为蓝牙无线传输的装置,使用起来也不必经过繁复的设定,只要开启发送端及蓝牙立体声耳机的电源后,就会自行配对,让你直接感受无线应用的神奇
==============================================================================
PND市场应该是微软意外的收获,现在市场上的绝大部分PND设备都采用了WinCE操作系统。这种地位,微软自然不愿意失去,最近它发布了专门针对PND市场的NavReady 2009。
Windows Embedded NavReady 2009提供了多种创新技术,可以帮助开发商和原始设备制造商(OEM)把智能、连接性、服务导向的便携式导航设备迅速推向市场,这些便携式导航设备可以简便地连接在线服务、具有蓝牙功能的手机、基于Windows的PC和互联网。Windows Embedded NavReady 2009基于Windows Embedded CE。
Windows Embedded NavReady 2009的主要特点:
· 实时搜索:为原始设备制造商(OEM)和合作伙伴提供了关键因素,使其可以在设备上实现基于互联网的实时搜索功能,找到与实时搜索地图(Live Search Maps)服务类似的最新兴趣点。
· 蓝牙技术:使得原始设备制造商(OEM)能够利用下述功能为用户提供丰富的免提方案:免提功能、配对服务、电话簿访问、高级音频分发、音频和视频远程控制、拨号网络、及蓝牙连接管理软件。最终用户可以将其便携式导航设备(PND)作为免提设备使用,在设备与兼容的蓝牙手机配对使用时,实现通话或数据连接。
· MSN Direct:使原始设备制造商(OEM)能够集成MSN Direct技术。这些技术可以通过提供最新路况提示和燃料价格等信息,缩短用户出行时间,改善差旅体验。
· Windows Sideshow功能:使便携式导航设备(PND)变成许多Windows Vista PC的辅助显示屏,允许Windows SideShow 工具与便携式导航设备(PND)交互和交换信息,在家中或在上班时为最终用户提供丰富的体验。
许多市场研究人士都在说,以后PND的趋势是连接性,服务导向,看来微软对这个也比较认可,它们的系统也突出了这两点。
从微软网站上披露的信息来看,NavReady应该是WinCE5.0之上的一个功能包,目前网站上已经提供了评估版的下载:http://www.microsoft.com/downloads/details.aspx?FamilyId=A781C442-702D-46E3-9F5A-0F7D7867F244&displaylang=en。
不知道这个系统的推出,对已经拼杀的刺刀见红的PND市场,会有什么样的影响。让我们拭目以待。
本文来自CSDN博客,转载请标明出处:http://blog.csdn.net/gooogleman/archive/2008/11/23/3354117.aspx
==============================================================================
NavReady的使用
Woindows Embedded NavReady需要工作在Windows CE 5.0 Platform builder上,要开始使用NavReady来做开发,可以按以下步骤。
1.安装Windows CE5.0 Platform builder.
2.下载安装所有的Windows CE5.0的更新。
3.下载安装NavReady
唉,说起来真是惭愧,7月份写了NavReady试用小记1,到2008年的最后一天才来完成它不让它成为太监贴,我的懒惰真是令自己发指呀。
上次第一次使用时,发现编译竟然有错误,研究了很久,才发现需要先安装Windows SideShow For Microsoft Windows CE 5.0,否则选择sideshow的选项,就会在编译时候出错。
编译完成后,下载到设备上运行,单纯从界面上看,发现不了任何的新东西。因为当时对NavReady理解还比较肤浅,所以就放了一段时间。后来参加了微软的一个研讨会,看了远峰做的DEMO样机的展示,才算是比较清楚的了解到NavReady增加的4个东东到底是咋回事。
其实最容易理解的就是蓝牙协议支持的加强,NavReady为WinCE5.0增加了4个协议支持,分别是:
1.Advanced Audio Distribution Profile(A2DP)
2.Audio/Video Remote Control Profile(AVRCP)
3.Bluetooth hands free profile
4.Pairing Service
现在蓝牙功能加到PND设备中已经是很常见了,不过由于协议自持的问题,大部分是使用模块来完成,现在这块的加强,应该使使用IC来做蓝牙功能变得容易起来。
搜多功能:添加了Live Search for device, 它主要提供了一种基于位置的搜索功能,可以根据当前的位置来搜索附近的餐馆,加油站等等,前提是必须有可用的网络连接。当然,一般的导航软件已经提供了这样的功能,而且是本机的,所以这个功能目前看起来,很难说有多大的吸引力。
MSN Direct:不要被名字中的MSN所迷惑,这个MSN和我们聊天用的那个东东完全没有关系。做过PND的人,大部分知道TMC,也就是通过FM来发送交通路况以及其它一些实时信息,MSN Direct就是微软提供的类似的服务。通过NavReady,把该服务要用到的底层协议增加到了WinCE里面,这个需要硬件的支持,远峰的机器也没有做这个功能。
Sideshow:这个是Windows vista引入的新功能,就是可以把设备变成vista pc的辅助显示屏,这个功能我没用过,也没见过,远峰的机器也没有做这个功能。
From: http://www.cnblogs.com/yashi88/archive/2008/12/31/1366186.html