如何防止.connect()之后Android蓝牙RFCOMM连接立即死亡?

我正在尝试从运行2.0.1固件的Moto Droid 连接到Zeemote(http://zeemote.com/)游戏控制器。以下测试应用程序确实已连接到设备(LED闪烁),但此后立即断开连接。


我在下面粘贴了两个测试应用程序:一个实际上尝试从输入流中读取,另一个则只是坐在那里,等待设备在5秒钟后断开连接。是的,我确实有第三个版本:),它首先等待ACL_CONNECTED,然后打开套接字,但是它的行为没有新内容。


一些背景信息:我可以使用bluez工具(也附带日志)从笔记本电脑完美连接到Zeemote。我肯定知道Droid 也可以与Zeemote进行对话,因为Market的'Game Pro'可以正常工作(但是那是驱动程序/服务,所以也许它使用了较低级的API?)。


我注意到,“ adb bugreport”既不报告Zeemote的UUID也不显示RFCOMM频道,而报告其他所有设备(包括Moto HS815耳机,另一个“ sdp浏览”不报告的哑设备)。另外,设备启动时,Zeemote的优先级为0(其他优先级为100+)。


我不知所措我在这儿住,我工作了这么久,我跑的想法说出来,所以任何帮助将是非常赞赏(即使你不知道的答案:))


皈依舞
浏览 729回答 3
3回答

慕运维8079593

尝试更改用于创建RfcommSocket的代码:sock = zee.createRfcommSocketToServiceRecord(&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; UUID.fromString("8e1f0cf7-508f-4875-b62c-fbb67fd34812"));对于此代码:Method m = zee.getClass().getMethod("createRfcommSocket", new Class[] { int.class });sock = (BluetoothSocket) m.invoke(device, 1);还尝试在此m.invoke(device,1);中更改参数范围1-3。当连接将被连接但尝试读取时中止时,请在某个循环中再次调用方法test()。很简单:for(int i=0;i<3;i++){&nbsp; if(!testDone) test(); }
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Android