android蓝牙可以';t连接

android蓝牙可以';t连接,android,bluetooth,obd-ii,Android,Bluetooth,Obd Ii,这个问题我已经有一段时间没有解决了 我有一个android应用程序,它将所有配对设备放在一个列表视图中。当您单击其中一个列表项时,它将启动连接到该蓝牙设备的请求 我可以得到带有地址的设备列表,没问题。 问题是,一旦我尝试连接,我会在socket.connect()上得到一个IOException 错误消息如下所示: “连接读取失败,套接字可能关闭或超时,读取ret:-1” 这是我的密码如有任何建议,将不胜感激。我被这件事缠住了 仅供参考:“OneEvent”方法是一个简化回调的库……这部分很有效

这个问题我已经有一段时间没有解决了

我有一个android应用程序,它将所有配对设备放在一个列表视图中。当您单击其中一个列表项时,它将启动连接到该蓝牙设备的请求

我可以得到带有地址的设备列表,没问题。 问题是,一旦我尝试连接,我会在socket.connect()上得到一个IOException

错误消息如下所示: “连接读取失败,套接字可能关闭或超时,读取ret:-1”

这是我的密码如有任何建议,将不胜感激。我被这件事缠住了

仅供参考:“OneEvent”方法是一个简化回调的库……这部分很有效。 当用户单击列表项时,此方法称为“public void onEvent(EventMessage.DeviceSelected event)

最后一行在try/Catch的“Catch”部分…我只是记录错误消息


请注意,“尝试连接到设备”和“连接失败”之间大约有20秒的间隔。

jelly bean蓝牙协议栈与其他版本明显不同

这可能有助于:

要点: UUID是一个必须指向嵌入式设备上已发布服务的值,它不是随机生成的。要访问的RFCOMM SPP连接有一个特定的UUID,它发布该UUID以标识该服务,并且在创建套接字时,它必须与相同的UUID匹配


如果您的目标是4.0.3及更高版本的设备,请使用
fetchUuidsWithSdp()
getUuids()
查找所有已发布的服务及其关联的UUID值。为了向后兼容,请阅读文章

第二次连接套接字a后,我收到了相同的错误消息。我只是检查了一下插座是否已经连接好了

if(!mmSocket.isConnected())
            mmSocket.connect();

我在安卓4.4.2(Moto G)上测试。

安卓的哪个版本?Jelly bean具有完全不同的蓝牙堆栈时可能会出现堆栈问题,请先取消配对,然后尝试配对retry@Slartibartfast我目前正在开发4.2.2 Nexus4。我会用logcat更新问题。检查我的答案,它会有帮助。我会看一看。可能需要几个小时才能测试它。GetUUIDs()返回ID列表。你怎么知道应该使用哪一个呢?我刚刚尝试了它返回的每一个UUID,遇到了同样的问题。你知道一个完整的代码示例,我可以复制/粘贴到一个新的应用程序中进行测试吗?我刚刚在“Note 2”设备上试过,代码运行得很好。蓝牙立即连接。我猜这只是安卓4.2.2或Nexus4的一个bug。我已经给你奖励积分:)谢谢。我觉得值得注意的是,我的代码连接到了连接到我汽车的蓝牙适配器。我用它来读取OBD2。我无法让应用程序与一个适配器连接,但我最近购买了另一个适配器,代码工作得非常好。所以,要么是适配器出了问题,要么是Android有一个不允许与某些设备通信的bug。
07-22 10:37:05.129: DEBUG/kent(17512): trying to connect to device
07-22 10:37:05.129: WARN/BluetoothAdapter(17512): getBluetoothService() called with no BluetoothManagerCallback
07-22 10:37:05.129: DEBUG/BluetoothSocket(17512): connect(), SocketState: INIT, mPfd: {ParcelFileDescriptor: FileDescriptor[98]}
07-22 10:37:40.757: DEBUG/dalvikvm(17512): GC_CONCURRENT freed 6157K, 9% free 62793K/68972K, paused 7ms+7ms, total 72ms
07-22 10:38:06.975: DEBUG/kent(17512): failed to connect
07-22 10:38:06.975: DEBUG/kent(17512): read failed, socket might closed or timeout, read ret: -1
if(!mmSocket.isConnected())
            mmSocket.connect();