2011-05-27 76 views
1

我试图将SDK附带的BluetoothChat示例修改为单服务器,多客户端配置。我有问题,希望有人能帮忙。将Android的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

但是,这个项目是非常出问题对我的测试设备和实际游戏将无法正常显示。有谁知道是否有扩展蓝牙连接的例子来处理多个连接?

UPDATE:

在试图解决这个问题,我相信我已经成功地扩展了官方Android蓝牙聊天例如与连接到多个客户端的服务器工作。

我已经将我的修改上传到github here

通过选择“菜单>制作可发现”,一台设备充当服务器。然后,每个客户端通过选择“菜单>连接设备”进行连接。我成功地将我的Motorola Droid和HTC Eris作为客户端连接到了我的Samsung Galaxy Tab 10.1“,每个从客户端发送的消息只显示在服务器上,服务器发送的消息显示在所有客户端上。虽然HTC设备的连接是零星的,但我已经在其他地方读到过,HTC上的蓝牙是越野车,所以我对它进行了粉化。如果您有任何问题,建议或其他反馈,请告诉我们

回答

0

我测试了您的代码,因为您说连接HTC作为主是一个问题,我制作了三星S 3人为主,HTC为客户。有效。但我用索尼爱立信手机再次尝试。没有其他设备可以成功充当主设备。 S3有Blutooth版本4.0其他有早期版本。你认为这个问题是因为蓝牙堆栈? 我需要在定制设备的项目中使用这个概念。试图找出天气问题与供应商(宏达电,索尼)或其相关的蓝牙堆栈有关。我不知道如何找出答案。这没有记录。 :( 有没有人遇到过这个?

相关问题