BluetoothSocket

android蓝牙通讯 java.io.IOException: Service disco...

生来就可爱ヽ(ⅴ<●) 提交于 2019-11-30 04:45:06
研究android蓝牙连接时,在网上找了个例子,作为客户端在调用connect函数时失败。经查资料 将 socket = device.createRfcommSocketToServiceRecord(UUID.fromString("a60f35f0-b93a-11de-8a39-08002009c666")); 改为 Method m; try { m = device.getClass().getMethod("createRfcommSocket", new Class[] {int.class}); try { socket = (BluetoothSocket) m.invoke(device, 1); _bluetooth.cancelDiscovery(); try { socket.connect(); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } } catch (IllegalArgumentException e) { // TODO Auto-generated catch block e.printStackTrace(); } catch (IllegalAccessException e) { // TODO Auto

android 蓝牙通讯常见异常 Service discovery failed ,conn...

最后都变了- 提交于 2019-11-29 03:42:07
用Android 开发一个应用,其中想使用蓝牙来做数据交换。 先查了一下资料,感觉还算简单,于是就开始了一整天的痛苦历程。 基本上用discover之类的能够很快的发现对方的蓝牙设备,但是在 建立socket的时候,就出了一堆问题。刚开始,服务端用 adapter.listenUsingRfcommWithServiceRecord 加上某个UUID来监听,同时获得serverSocket,客户端用 serverDevice.createRfcommSocketToServiceRecord 来获取socket,然后就在 socket.connect的时候,出了很多 奇怪的错误。 最开始是 Service discovery failed , 然后是 connection refused, 然后是 File descriptor in bad state 总之搜索了一下,确实千奇百怪的错误都有。后来看到有人用 Method m = serverDevice.getClass().getMethod( "createRfcommSocket", new Class[]{int.class}); BluetoothSocket socket = (BluetoothSocket) m.invoke( serverDevice, Integer.valueOf( 1)); 据说能解决