0

我正在尝试通过蓝牙将简单的字符串消息发送到另一台设备。我的代码如下所示:

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

尝试连接时。你能告诉我我做错了什么吗?

4

2 回答 2

1

您可以尝试使用 socket.getOutputStream() 来接收相关的 OutputStream。使用 socket.isConnected() 检查当前状态。

但是看看谷歌官方的例子(蓝牙聊天):http: //developer.android.com/samples/BluetoothChat/index.html

于 2016-07-10T12:03:37.133 回答
0

我知道这是一个古老的例子,但对于任何寻找这个确切问题的解决方案的人来说,问题是你在开始连接之前调用 socket.close() 所以你需要做的就是删除 socket.close() 任何东西应该可以正常工作

于 2020-01-05T18:16:29.343 回答