BluetoothServerSocket accept fails and throws an IOException

后端 未结 1 1210
醉话见心
醉话见心 2020-12-13 08:10

I have a device which supports the OBEX Object Push Profile, this profile is based upon the Serial Port Profile. My guess is that I can use the Android Bluetooth Chat exampl

1条回答
  •  时光说笑
    2020-12-13 08:26

    I finally solved it, the problem is that different Android Versions and different devices seemes to need different sockets. I tryed it with Samsung Galaxy XCOVER, Tab1, Tab2, Nexus, Note, Motorola Defy and HTC Flyer. The Sockets I used are:

    A:

    Method m = mmDevice.getClass().getMethod("createRfcommSocket", new Class[] { int.class });
    mSocket = (BluetoothSocket) m.invoke(mmDevice, Integer.valueOf(1));
    

    B:

    Method m = mmDevice.getClass().getMethod("createInsecureRfcommSocket", new Class[]{int.class});
    mSocket=(BluetoothSocket)m.invoke(mmDevice,Integer.valueOf(1));
    

    C:

    mSocket=BluetoothAdapter.getDefaultAdapter().getRemoteDevice(mmDevice.getAddress()).createRfcommSocketToServiceRecord(UUID.fromString("00001101-0000-1000-8000-00805F9B34FB"));
    

    Android 4.0.x works for Nexus, Flyer,Tab1 with A,B Android 4.0.3 works for Tab2 with B Android 3,6,x works for DEFY with A,B Android 2.3.6 works for XCOVER with C

    I can't find a solution witch works for all devices and I;m not able to find out witch socket will work before I create and use the Socket, especially the XCOVER perform the connect() for all Sockets without throwing an exception, but catch if i try tro write(). So if you want to setup a bloothoh connection wich works for all devices you have to create the sockets, connect an write and then remeber the socket wich works (e.g. in preferences)

    0 讨论(0)
提交回复
热议问题