如何在Android中通过蓝牙发送字符串消息?

时间:2016-07-10 11:23:46

标签: android xamarin bluetooth bluetooth-socket

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

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

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

2 个答案:

答案 0 :(得分:1)

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

但请看官方Google示例(蓝牙聊天):http://developer.android.com/samples/BluetoothChat/index.html

答案 1 :(得分:0)

我知道这是一个古老的示例,但是对于任何想解决此确切问题的人来说,问题是您在开始连接之前先调用socket.close(),所以您要做的就是删除socket.close( )任何一切都应该正常工作