C# 读取蓝牙连接失败,套接字可能已关闭或超时,读取重试:-1

C# 读取蓝牙连接失败,套接字可能已关闭或超时,读取重试:-1,c#,android,xamarin,bluetooth,C#,Android,Xamarin,Bluetooth,我正在Xamarin(Android应用程序)中创建一个应用程序,允许用户通过蓝牙连接将手机上的数据发送到另一部手机。当我点击按钮时,它应该运行bluetooth getAllPairedDevices,然后打开连接,但当它尝试连接时,它进入抛出异常 此字符串设置数据变量: private string data = null; 这是我的呼叫按钮,用于检查是否有设备配对: Button btConnect = FindViewById<Button>(

我正在Xamarin(Android应用程序)中创建一个应用程序,允许用户通过蓝牙连接将手机上的数据发送到另一部手机。当我点击按钮时,它应该运行bluetooth getAllPairedDevices,然后打开连接,但当它尝试连接时,它进入抛出异常

此字符串设置数据变量:

       private string data = null;
这是我的呼叫按钮,用于检查是否有设备配对:

        Button btConnect = FindViewById<Button>(Resource.Id.connect);
        btConnect.Click += (sender, e) =>
        {
            BluetoothManager manager = new BluetoothManager();
            if (manager.getAllPairedDevices() != false)
            {
                System.Threading.Thread thread = new System.Threading.Thread(() =>
                {
                    while (true)
                    {
                        data = manager.getDataFromDevice();
                    }
                });
                thread.IsBackground = true;
                thread.Start();
            }
        };
由于我是蓝牙通信新手,我不确定问题出在哪里,我已经检查了多个答案,还有android.library,但它太复杂了,所以没有运气


还有一个子问题,您如何通过此设置发送简单字符串

public class BluetoothManager
{

    // Unique ID for connecting
    private const string UuidUniverseProfile = "00001101-0000-1000-8000-00805f9b34fb";
    // Incomming bluetooth data from UART
    private BluetoothDevice result;
    // Input/Output stream of this communication
    private BluetoothSocket mSocket;

    // Convert byte[] to strings
    private BufferedReader reader;
    private System.IO.Stream mStream;
    private InputStreamReader mReader;

    public BluetoothManager()
    {
        reader = null;
    }

    private UUID getUUIDfromString()
    {
        return UUID.FromString(UuidUniverseProfile);
    }

    private void close(IDisposable connectedObject)
    {
        if (connectedObject == null) return;
        try
        {
            connectedObject.Dispose();
        }
        catch (Exception ex)
        {
            throw ex;
        }
        connectedObject = null;
    }

    private void openDeviceConnection(BluetoothDevice btDevice)
    {
        try
        {
            // Getting socket from specific device
            mSocket = btDevice.CreateRfcommSocketToServiceRecord(getUUIDfromString());
            mSocket.Connect();
            // Input stream
            mStream = mSocket.InputStream;
            // Output stream
            //mStream.OutputStream;
            mReader = new InputStreamReader(mStream);
            reader = new BufferedReader(mReader);
            System.Threading.Thread.Sleep(1000);
            mSocket.Close();
        }
        catch (IOException ex)
        {
            close(mSocket);
            close(mStream);
            close(mReader);
            throw ex;
        }
    }

    public String getDataFromDevice()
    {
        return reader.ReadLine();
    }

    public bool getAllPairedDevices()
    {
        // Default android phone bluetooth
        BluetoothAdapter btAdapter = BluetoothAdapter.DefaultAdapter;
        var devices = btAdapter.BondedDevices;
        if (devices != null && devices.Count > 0)
        {
            // All paired devices
            foreach (BluetoothDevice mDevice in devices)
            {
                openDeviceConnection(mDevice);
            }
            return true;
        }
        else
        {
            return false;
        }

    }        
}