Я сделал то же самое 2 года назад.
Для Android мой код немного отличается от вашего:
BluetoothSocket socket = Device.createRfcommSocketToServiceRecord(device_UUID);
socket.connect();
DataOutputStream dos = new DataOutputStream(socket.getOutputStream());
dos.writeChar('x'); // for example
socket.close();
Я использовал DataOutputStream
для отправки данных на ПК. Но, конечно, это не имеет значения, просто для справки.
для ПК,
LocalDevice localDevice = LocalDevice.getLocalDevice();
localDevice.setDiscoverable(DiscoveryAgent.GIAC); // Advertising the service
String url = "btspp://localhost:" + device_UUID + ";name=BlueToothServer";
StreamConnectionNotifier server = (StreamConnectionNotifier) Connector.open(url);
StreamConnection connection = server.acceptAndOpen(); // Wait until client connects
//=== At this point, two devices should be connected ===//
DataInputStream dis = connection.openDataInputStream();
char c;
while (true) {
c = dis.readChar();
if (c == 'x')
break;
}
connection.close();
Я не уверен, что вышеуказанные коды все еще работают сегодня, как это было сделано 2 года назад. API BlueCove, возможно, сильно изменился. Но в любом случае, эти коды работают для меня. Надеюсь, это поможет вам.
Еще одно замечание: мне пришлось удалить драйвер Bluetooth Toshiba на моем ПК и переустановить драйвер Microsoft, чтобы использовать BlueCove. Иначе это не сработает. (Однако последняя версия BlueCove, возможно, уже поддерживала различные драйверы, пожалуйста, исправьте меня, если я сказал что-то не так.)