我试图使用谷歌提供的蓝牙聊天样本API应用程序连接到连接到另一个设备的蓝牙RS232适配器。这是应用程序供参考:
这里是RS232连接器的规格表仅供参考:
那么问题是当我连接到设备时:
mmSocket.connect(); (BluetoothSocket::connect())
我总是收到由connect()方法抛出的IOException错误。当我对异常做一个toString时,我得到“服务发现失败”。我的问题大多是在连接方法中引起IOException的情况?我知道那些在源的某个地方,但我不知道你写的应用程序的java层和包含实际堆栈的C/C++层的确切界面。我知道它使用蓝图蓝牙堆栈,它是用C/C++编写的,但不知道如何将这个连接到java层,这是我认为是抛出异常。任何帮助我指出我可以尝试解剖这个问题将是不可思议的。
还要注意,我可以配对RS232适配器,但我无法实际连接。这是logcat输出的更多参考:
I/ActivityManager( 1018): Displayed activity com.example.android.BluetoothChat/.DeviceListActivity: 326 ms (total 326 ms)
E/BluetoothService.cpp( 1018): stopDiscoveryNative: D-Bus error in StopDiscovery: org.bluez.Error.Failed (Invalid discovery session)
D/BluetoothChat( 1729): onActivityResult -1
D/BluetoothChatService( 1729): connect to: 00:06:66:03:0C:51
D/BluetoothChatService( 1729): setState() STATE_LISTEN -> STATE_CONNECTING
E/BluetoothChat( 1729): + ON RESUME +
I/BluetoothChat( 1729): MESSAGE_STATE_CHANGE: STATE_CONNECTING
I/BluetoothChatService( 1729): BEGIN mConnectThread
E/BluetoothService.cpp( 1018): stopDiscoveryNative: D-Bus error in StopDiscovery: org.bluez.Error.Failed (Invalid discovery session)
E/BluetoothEventLoop.cpp( 1018): event_filter: Received signal org.bluez.Device:PropertyChanged from /org/bluez/1498/hci0/dev_00_06_66_03_0C_51
I/BluetoothChatService( 1729): CONNECTION FAIL TOSTRING: java.io.IOException: Service discovery failed
D/BluetoothChatService( 1729): setState() STATE_CONNECTING -> STATE_LISTEN
D/BluetoothChatService( 1729): start
D/BluetoothChatService( 1729): setState() STATE_LISTEN -> STATE_LISTEN
I/BluetoothChat( 1729): MESSAGE_STATE_CHANGE: STATE_LISTEN
V/BluetoothEventRedirector( 1080): Received android.bleutooth.device.action.UUID
I/NotificationService( 1018): enqueueToast pkg=com.example.android.BluetoothChat callback=android.app.ITransientNotification$Stub$Proxy@446327c8 duration=0
I/BluetoothChat( 1729): MESSAGE_STATE_CHANGE: STATE_LISTEN
E/BluetoothEventLoop.cpp( 1018): event_filter: Received signal org.bluez.Device:PropertyChanged from /org/bluez/1498/hci0/dev_00_06_66_03_0C_51
V/BluetoothEventRedirector( 1080): Received android.bleutooth.device.action.UUID
我要连接的设备是00:06:66:03:0C:51我可以扫描并显然配对好
以下由一个类似的问题合并,这个问题在这里被选中的答案成功解决:
我正试图用BlueSMiRF Gold芯片连接到嵌入式设备。我的工作Python代码(使用PyBluez库),我想移植到Android,如下所示:
sock = bluetooth.BluetoothSocket(proto=bluetooth.RFCOMM)
sock.connect((device_addr, 1))
return sock.makefile()
…所以连接的服务被简单地定义为通道1,没有任何SDP查找。
作为唯一的文档机制,我在Android API中看到,对SDU进行了UUID的查找,我略有亏损。从我的Linux主机使用“sdptool浏览”出来了,所以我猜测这个芯片只是缺乏SDP支持。