为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

皈依舞 2019-11-07 12:54:04
我正在尝试从运行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+)。我不知所措我在这儿住,我工作了这么久,我跑的想法说出来,所以任何帮助将是非常赞赏(即使你不知道的答案:))
查看完整描述

3 回答

?
慕运维8079593

TA贡献1876条经验 获得超5个赞

尝试更改用于创建RfcommSocket的代码:


sock = zee.createRfcommSocketToServiceRecord(

                      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++){  if(!testDone) test(); }


查看完整回答
反对 回复 2019-11-07
  • 3 回答
  • 0 关注
  • 728 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信