使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的蓝牙技术存在很多问题,因此我将其归纳为总结。
希望其他人会发现此示例有用。如果您有任何疑问,建议或其他反馈,请告诉我。
没有找到相关结果
已邀请:
1 个回复
犀寺扦