使Android BluetoothChat示例适用于单个服务器,多个客户端

| 我正在尝试将SDK随附的BluetoothChat示例改编为单服务器,多客户端配置。我遇到了问题,希望有人能提供帮助。 我已经创建了两个不同的应用程序,即服务器和客户端,而不是如示例中那样,只有一个应用程序既作为服务器又作为客户端。因此,启动应用程序后,服务器将创建一个蓝牙服务,该服务将创建一个新的AcceptThread,以侦听传入的连接。我对示例代码进行了一些修改,以便即使在建立第一个连接之后,AcceptThread仍继续侦听(在建立一个连接后,示例停止侦听,因为它只需要在两个设备之间建立连接)。我创建了一个ArrayList来处理多个连接。每次尝试从远程设备建立新连接时,都会创建一个新的ConnectedThread并将其添加到列表中。 第一个客户端连接正常。 当第二个客户端尝试连接时,连接失败。日志输出为:
D/BluetoothEventLoop(  140): Device property changed: <device address> property: Connected value: true
I/BluetoothService(  140): ACL connected, mAclLinkCount = 2
D/BluetoothEventLoop(  140): Device property changed: <device address> property: Connected value: false
I/BluetoothService(  140): ACL disconnected, mAclLinkCount = 1
因此,看起来第二次连接尝试已成功,但随后立即断开了连接。看起来这是发生在低级别的代码之外的任何事情。在许多不同类型的测试设备中都会发生这种情况,因此我不认为这是由于特定的固件或硬件问题引起的。 有人能帮忙吗? 另外,谁能指出使用Android蓝牙的服务器->多客户端连接示例的示例?我遇到了一个空气曲棍球的例子: http://code.google.com/p/apps-for-android/source/browse/#svn%2Ftrunk%2FBTClickLinkCompete%2Fsrc%2Fnet%2Fclc%2Fbt 但是这个项目在我的测试设备上非常故障,实际的游戏无法正常显示。有谁知道是否存在扩展了BluetoothChat的示例以处理多个连接? 更新: 为了解决此问题,我相信我已经成功扩展了官方的Android蓝牙聊天示例,使其可以与连接到多个客户端的服务器一起使用。 我已经将我的修改内容上传到了github。 一台设备通过选择\“菜单>设为可发现\”来充当服务器。然后,每个客户端都可以通过选择\“菜单>连接设备\”进行连接。我已经成功地将摩托罗拉Droid和HTC Eris作为客户端连接到了Samsung Galaxy Tab 10.1 \“。从客户端发送的每条消息仅显示在服务器上。从服务器发送的消息在所有客户端上显示。 使它完全起作用是一个繁琐的过程。不过,与HTC设备的连接是零星的。我在其他地方读到过,关于HTC的蓝牙技术存在很多问题,因此我将其归纳为总结。 希望其他人会发现此示例有用。如果您有任何疑问,建议或其他反馈,请告诉我。     
已邀请:
        我测试了您的代码。就像您说的那样,将HTC作为主设备连接是一个问题。我以三星S3为主机,并以HTC为客户端。有效。但是我再次尝试使用索尼爱立信手机。没有其他设备可以成功充当主设备。  S3具有Blutooth版本4.0,其他具有较早版本。您是否认为问题是由于蓝牙堆栈引起的?  我需要在将定制设备的项目中使用此概念。试图找出天气问题与供应商(HTC,Sony)或其蓝牙堆栈有关。而且我不知道如何找出答案。没有记录。 :(  有人面对过吗?     

要回复问题请先登录注册