我试图通过蓝牙将简单的字符串消息发送到另一台设备。我的代码如下所示:
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
尝试连接时。你能告诉我我做错了吗?
答案 0 :(得分:1)
您可以尝试使用socket.getOutputStream()来接收关联的OutputStream。检查socket.isConnected()当前状态。
但请看官方Google示例(蓝牙聊天):http://developer.android.com/samples/BluetoothChat/index.html
答案 1 :(得分:0)
我知道这是一个古老的示例,但是对于任何想解决此确切问题的人来说,问题是您在开始连接之前先调用socket.close(),所以您要做的就是删除socket.close( )任何一切都应该正常工作