Как отправить строковое сообщение через Bluetooth в Android?
Я пытаюсь отправить простое строковое сообщение через Bluetooth на другое устройство. Мой код выглядит так:
private ICollection<BluetoothDevice> devicesArray;
private void SendBtn_Click(object sender, EventArgs e)
{
BluetoothDevice bd = null;
foreach(var o in PairedListView.pairedDevices)
{
if(o.Selected == true)
{
bd = getPairedDevice(o.DeviceAddress);
break;
}
}
if(bd != null)
{
UUID uuid = UUID.FromString("00001101-0000-1000-8000-00805f9b34fb");
BluetoothSocket socket = bd.CreateRfcommSocketToServiceRecord(uuid);
socket.Connect();
Stream stream = socket.OutputStream;
byte[] array = Encoding.ASCII.GetBytes("Testing message!");
stream.Write(array, 0, array.Length);
socket.Close();
}
else
{
Alerts.showAlertMessage("Choose device", this);
}
}
private BluetoothDevice getPairedDevice(string address)
{
BluetoothDevice bd = null;
foreach(var o in devicesArray)
{
if(o.Address == address)
{
bd = o;
break;
}
}
return bd;
}
Я ожидаю получить строковое сообщение на выбранном устройстве. Проблема в том, что я получаю ошибку
Java.IO.IOException: Service discovery failed
При попытке подключения. Не могли бы вы сказать мне, что я делаю не так?
1 ответ
Вы можете попробовать socket.getOutputStream(), чтобы получить связанный OutputStream. Проверьте с помощью socket.isConnected() текущее состояние.
Но посмотрите на официальный пример Google (чат Bluetooth): http://developer.android.com/samples/BluetoothChat/index.html
Я знаю, что это старый пример, но для тех, кто ищет решение именно этой проблемы, проблема в том, что вы вызываете socket.close() перед запуском соединения, поэтому все, что вам нужно сделать, это удалить socket.close() все должно работать нормально