蓝牙耳机的连接错误

mora 2011-10-10 11:01:34
蓝牙耳机与手机配对并连接好后会显示“已连接到手机和媒体音频”的提示信息,此时播放音乐和接听电话都可以从蓝牙耳机出来,接着手机重启后蓝牙耳机与手机自动配对只成功连接到媒体音频,显示"已连接到媒体音频",此时播放音乐可以从蓝牙耳机出音但接听电话是从receiver出音的。从log看是在android_bluetooth_headsetbase.cpp的waitForAsyncConnectNative()出错了。

01-01 09:32:00.690 I/BT HSHFP( 202): waitForAsyncConnectNative function start connectAysncNative

01-01 09:32:00.690 I/BT HSHFP( 202): Created RFCOMM socket fd 71.

01-01 09:32:00.690 I/BT HSHFP( 202): connectAsyncNative: connect to bt-headset channel=1 addr=00:0B:E4:A9:CC:CA

01-01 09:32:00.690 I/BT HSHFP( 202): async connect is in progress (Operation now in progress)

01-01 09:32:00.770 I/BT HSHFP( 202): waitForAsyncConnectNative: select() result=2 timeout=500 set_read=1 set_write=1

01-01 09:32:00.770 I/BT HSHFP( 202): waitForAsyncConnectNative: read() result=-1 read=0 error:Connection refused (111)

01-01 09:32:00.770 E/BT HSHFP( 202): RFCOMM async connect() error: Connection refused (111), nr = -1

01-01 09:32:00.770 I/BT HSHFP( 202): Trying to connect to rfcomm socket result=-111

01-01 09:32:00.770 D/BT HSHFP( 202): RFCOMM connection attempt took 1173 ms

01-01 09:32:00.770 W/BT HSHFP( 202): headset.waitForAsyncConnect() error: -111

01-01 09:32:00.770 D/BT HSHFP( 202): Rfcomm error

log如上面所示,select()的返回结果就和期望的不一样了,code上有注释返回结果为1才是正确的,但这里的结果确实2,难道是fdset_read与fdset_write都被设置后的结果么,结果为1时只有fdset_write会被设置过。
请问有谁碰上过这样的问题吗,是什么原因造成的呢,如何解决?
...全文
1113 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
wusonwei 2012-05-02
  • 打赏
  • 举报
回复
修改超时时间
packages/apps/Phone/src/com/android/phone/BluetoothHeadsetService.java
Function private int waitForConnect(HeadsetBase headset)

-result = headset.waitForAsyncConnect(500,mConnectedStatusHandler);
+result = headset.waitForAsyncConnect(1000,mConnectedStatusHandler);

修改500ms->1000ms
lgdlchshg 2012-03-18
  • 打赏
  • 举报
回复
这个问题我也遇到了,请问如何解决的??
mora 2011-10-10
  • 打赏
  • 举报
回复
别沉了呀!
IVT BlueSoleil 蓝牙驱动管理软件(蓝牙下载)是很多蓝牙适配器所捆绑的设置软件,优点是界面直观,兼容性较强。这个是6.4.25版本,内附中文说明手册。 IVT BlueSoleil 蓝牙驱动管理软件V6.4.25这个版本的一个重要升级是EDR(增强数据传输速率),EDR将蓝牙的速率提高到3Mbps,EDR的优势在于: 1、更高的带宽,以支持多个设备同时连接。 2、更好的音频质量。 3、更低的功耗。 IVT BlueSoleil 蓝牙驱动管理软件(蓝牙下载)在多任务环境(主机同时与键盘、鼠标、耳机相连)中,如果使用的是单声道耳机,蓝牙的带宽余量只有42%,这将不允许数据重发,否则会影响音频质量;如果使用的是立体声耳机,带宽余量只有25%,根本不够支持其他应用,如传输文件等。凭借更高的带宽,EDR可以更好地支持多个设备的同时连接,并提供更佳的音频质量。在与前述相同的多任务环境中,EDR的带宽余量为62%,足够其他应用使用。此外,在传输相同大小的文件时,EDR只需以前1/3的时间,从而节省了功耗。 当然这要求你的蓝牙适配器支持EDR才能获得这样的提高。一般蓝牙2.0的适配器都支持EDR,所以强烈建议拥有蓝牙2.0的适配器并且喜欢BlueSoleil驱动的朋友升级。如果你的蓝牙适配器不是2.0的也没关系,这个版本也支持你的蓝牙1.1、1.2。 IVT BlueSoleil 蓝牙驱动管理软件(蓝牙下载)安装说明(请一定按以下顺序进行,否则安装时可能会出现蓝屏错误): 1、先卸载你原来的蓝牙驱动,拔下你的蓝牙适配器。 2、重新启动你的电脑,安装新版的蓝牙驱动。 3、再启动你的电脑,插上你的蓝牙适配器,开始你新的蓝牙旅程。
一. 什么是蓝牙? 蓝牙的英文是Bluetooth,它是以11世纪那个叫"Blue- tooth"的丹麦国王而命名的。1998年5月,爱立信、IBM、Intel、诺基亚和东芝等公司共同提出了一项近距离无线数字通信的技术标准,即蓝牙(Bluetooth)技术。随后这五家公司组建了一个特殊兴趣组织(SIG:Special Interest Group)来负责开发此技术及协议,如今已有1800多家公司加入。1999年7月份蓝牙SIG推出了蓝牙协议的1.0版,将其推向应用阶段。蓝牙是一种支持设备短距离通信(一般是10m之内)的无线电技术。能在包括移动电话、PDA、无线耳机、笔记本电脑、相关外设等众多设备之间进行无线信息交换。蓝牙的标准是IEEE802.15,工作在2.4GHz 频带,带宽为1Mb/s。蓝牙技术使用高速跳频(FH,Frequency Hopping)和时分多址(TDMA,Time DivesionMuli—access)等先进技术,在近距离内最廉价地将几台数字化设备(各种移动设备、固定通信设备、计算机及其终端设备、各种数字数据系统,如数字照相机、数字摄像机等,甚至各种家用电器、自动化设备)呈网状链接起来。蓝牙技术将是网络中各种外围设备接口的统一桥梁,它消除了设备之间的连线,取而代之以无线连接。蓝牙是一种短距的无线通讯技术,电子装置彼此可以透过蓝牙而连接起来,省去了传统的电线。透过芯片上的无线接收器,配有蓝牙技术的电子产品能够在十公尺的距离内彼此相通,传输速度可以达到每秒钟1兆字节。以往红外线接口的传输技术需要电子装置在视线之内的距离,而现在有了蓝牙技术,这样的麻烦也可以免除了。 二. 蓝牙协议 蓝牙的通信协议也采用分层结构。整个协议体系结构分三大部分:底层硬件模块、中间协议层和高层应用。底层硬件部分包括无线跳频(Radio Frequency,RF)、基带(Baseband,BB)和链路管理(Link Manager,LM)。RF层通过2.4GHz 无需授权的ISM频段的微波,实现数据位流的过滤和传输,本层协议主要定义了蓝牙收发器在此频带正常工作所需满足的要求。BB负责跳频和蓝牙数据及信息帧的传输。LM负责连接的建立和拆除以及链路安全和控制。层次结构使其设备具有最大可能的通用性和灵活性。根据通信协议,各种蓝牙设备无论在任何地方,都可以通过人工或自动查询来发现其它蓝牙设备,从而构成微微网(piconet)或分散网(scatternet),实现系统提供的各种功能,使用十分方便。蓝牙协议栈的层次结构中: 1) Bluetooth radio是蓝牙设备中负责传送和接收调制无线电信号的收发器。出于兼容的原因,采用蓝牙的无线设备应当具有确定的无线收发特性。 2) Baseband(基带)即蓝牙的物理层,负责管理物理信道和链路,但不包括错误纠正、数据处理、跳频选择和蓝牙安全等业务。 3) ACL即在物理信道上传输数据的异步无连接(Asynchronous Connection-Less)物理链路。ACL链路在主单元(Master)和所有其它从单元(Slave)之间提供分组交换连接。 4) SCO 即同步连接(Synchronous Connection-Oriented)物理链路,主要用于语音通信之类的信息传输。SCO是主单元和指定从单元之间点对点的对称链路。它和电路交换连接非常相似。 5) 链路管理器(Link Manager)主要处理链路建立、链路安全和链路控制等任务。它提供认证、加密控制、功率控制等服务和QoS能力。链路管理还可以管理不同模式(park、hold、sniff和active)下的设备。 6) L2CAP即逻辑链路控制和适应层协议(Logical Link Control and Adaptation Layer protocol)。它位于数据链路层,向上层协议提供复用、分段、重组和组抽象等无连接和面向连接的数据服务。L2CAP允许高层协议和应用程序收发长度最高可达64 Kb的L2CAP数据包。 7) SDP即服务发现协议(Service Discovery Protocol),应用程序使用该协议找出哪些服务可用,并确定这些可用服务的特性。 8) 串口仿真协议(RFCOMM)是一种简单传输协议,可在L2CAP之上仿真RS-232(EIATIA-232-E)串口电路,因此它实际上是一种电缆替代协议。RFCOMM协议支持两台蓝牙设备之间的多达60个并发连接。 9) TCP(传输控制协议:Transmission Control Protocol)在网络层采用IP协议情况下在传输层建立不同设备之间的可靠连接。 IP协议提供协议复用和基于IP 地址的连接。 10) Jini技术提供了一种简单的机制,采用这种机制可以让设备组合起来形成即时群体——不需要计划、安装或者人工干涉。每一种设备都向群体中的其它设备提供他们可以使用的服务。这些设备则提供自己的接口从而保证其可靠性和兼容性。和工作在底层的蓝牙相比,JINI运行在更高的层次。 WAP就是无线应用协议(Wireless Application Protocol ),这是一种为移动电话、寻呼机、PDA和其它无线终端提供Internet通信和高级电话服务的标准协议。

80,349

社区成员

发帖
与我相关
我的任务
社区描述
移动平台 Android
androidandroid-studioandroidx 技术论坛(原bbs)
社区管理员
  • Android
  • yechaoa
  • 失落夏天
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧