Я пытаюсь подключиться к устройству считывания RFID. Я могу подключиться к нему, создав BluetoothSocket и позвонив по нему, как показано ниже (многие детали опущены):
public static final UUID MY_UUID = UUID.fromString("00001101-0000-1000-8000-00805F9B34FB");
BluetoothSocket socket = device.createRfcommSocketToServiceRecord( MY_UUID);
Это работает, как и ожидалось, и соединение с устройством может быть установлено.
Моя проблема в том, что API устройства предназначен для работы с последовательным портом. Чтобы использовать API, я должен передать ему строку, которая выглядит следующим образом:
String uri = "eapi:///com1";
Похоже, что Android не открывает последовательный порт миру. В Linux я ожидал, что смогу соединиться со строкой вроде:
String uri = "eapi:///dev/ttyS0";
Просмотр каталога / dev на телефоне не показывает ничего подобного. Кроме того, записи в / dev не меняются, когда я устанавливаю соединение. Это заставляет меня поверить, что Android не создает последовательное устройство в / dev при подключении к устройству Bluetooth.
Как я могу получить доступ к com-порту, который BluetoothSocket использует для подключения к устройству? Есть ли на Android виртуальное устройство, например com1 или / dev / ttyS0?
В старых версиях API, в которых использовался класс RfcommSocket, были методы getPort () и getFileDescriptor (), которые могли бы мне помочь. Текущее гнездо Bluetooth, кажется, скрывает эти детали.
Заранее спасибо!
Edit:
Оказывается, Android просто не создает виртуальное устройство для последовательного потока. Вместо этого я напрямую интегрировал свой код клиента с bluetoothsocket.