Как отправить строковое сообщение через 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() все должно работать нормально

Другие вопросы по тегам