Для андроида только для соединения на передачу. Если еще обратно читать, то еще один поток создается.
remoteDevice = defaultAdapter.getRemoteDevice(getMacAddress());
createRfcommSocketToServiceRecord = remoteDevice.createRfcommSocketToServiceRecord(myUUID);
createRfcommSocketToServiceRecord.connect();
dataOutputStream = new DataOutputStream(createRfcommSocketToServiceRecord.getOutputStream());
Таймаутов явных я не знаю у операций нет. Если периодически пытаться соединяться, то попытки получиться
делать секунд через 30 . Все функции или делают, что должны или вызывают исключения.
У меня на практике общения с термопринтером плавает от меньше одной секунды до 25.
Можно забыть включить принтер, а потом нажать на питание где-то как я выше писал 30 секунд.
72км/ч = 20 м/с Получается имеем на все меньше 1 секунды , но как Вы начнете точно конект на расстояние 10 метров от устройства не представляю.
Спутниковая гео локация +-50 метров .