Жалко. Поэтому словами.
Есть фоновая служба. В ней сиглетон тред сервера.
В сервере
// создаём серверный сокет, он будет прослушивать порт на наличие запросов
serverSocket = bluetoothAdapter.listenUsingInsecureRfcommWithServiceRecord("RAWBT", SPP_UUID);
// запускаем бесконечный цикл, внутри которого сокет будет слушать соединения и обрабатывать их
// создаем клиентский сокет, метод accept() создаёт экземпляр Socket при новом подключении
Далее в бесконечном цикле, пока верен флаг что работаем
принять соединение, если количество открытых соединений не превысило лимит.
стартует тред взаимодействия
public abstract class Connection extends Thread {
BluetoothSocket socket; // сокет, созданный при подключении пользователя
final OnDocumentReceived mDelegate;
}
В конкретной реализации этого класса потребуются
final ExecutorService executor = Executors.newSingleThreadExecutor();
private DataOutputStream stream;
private DataInputStream dataInputStream;
Экзекутор для рассылки сообщений с прочитанными данными
так как чтение идет из еще одного паралейного треда.
В общем врядли ваши примеры были настолько сложными
Я еще про часть самого окна терминала ничего не написал. А там тоже накрутить кода пришлось