Частые случайные сбои (обнаружение службы не удалось) в createInsecureRfcommSocketToServiceRecord

Я пытаюсь установить небезопасное соединение через разъем Bluetooth между двумя устройствами Android. Я контролирую программное обеспечение на обоих концах. Один конец использует listenUsingInsecureRfcommWithServiceRecord прослушивать соединение, другой конец использует createInsecureRfcommSocketToServiceRecord подключиться. Это работает. Иногда.

"Иногда" это моя проблема. Приблизительно в 20% попыток это терпит неудачу и выдает следующее исключение:

java.io.IOException: Service discovery failed
    at android.bluetooth.BluetoothSocket$SdpHelper.doSdp(BluetoothSocket.java:403)
    at android.bluetooth.BluetoothSocket.connect(BluetoothSocket.java:213)
    at com.example.bluetoothpoke.MainActivity$1.onClick(MainActivity.java:34)

Оба устройства активны с включенным экраном. Расстояние между устройствами составляет около 1 м (10 см и 3 м не имеют значения). Ни одно из устройств не выполняет обнаружение. Оба устройства могут быть обнаружены (и то, что оба не обнаружены, тоже ничего не меняет).

Должен ли я считать, что это нормально из-за беспроводного интерфейса, и просто повторить попытку при сбое, или я могу что-то сделать? Разве это не должно работать более надежно, учитывая, что я на очень удобном расстоянии?

Примечание: я нашел много похожих вопросов, но те, которые я нашел, касаются "вообще не работает", подключения к устройству, отличному от Android, или того и другого.

0 ответов

Другие вопросы по тегам