我正在尝试将音频流式传输到 C# 代码中的蓝牙设备。我选择了 32feet.net 库来帮助解决这个问题。我能够很好地配对蓝牙扬声器,然后我使用下面的代码连接到设备。
globalClient.BeginConnect(device.DeviceAddress, BluetoothService.SerialPort, new AsyncCallback(BluetoothConnectedAsyncHandler), device);
异步回调方法:
private void BluetoothConnectedAsyncHandler(IAsyncResult result)
{
BluetoothDeviceInfo connectedDevice = (BluetoothDeviceInfo)result.AsyncState;
globalClient.EndConnect(result);
if (result.IsCompleted)
{
NetworkStream btStream = globalClient.GetStream();
}
}
这一切都很好,但是当我尝试将服务从 BluetoothService.SerialPort 设置为 BluetoothService.AudioSource 时,我在“globalClient.EndConnect(result);”上收到一个 SocketException 行说“由于目标主机已关闭,套接字操作失败”。看截图:
当使用 BluetoothService.SerialPort 设置扬声器时,我还尝试通过 NetworkStream 向扬声器发送数据,但它不播放任何内容 - 没有噪音或静电。
我的假设是,这不能用 32feet.net 轻松完成,我必须在代码中编写 a2dp 规范。我认为使用了 32feet.net 库,以便我可以告诉操作系统将扬声器用作输出设备,而不是在代码中控制音频输出作为支持的功能。
请帮忙!有人做过吗?
如果我通过 BluetoothService.SerialPort 连接向设备发送符合 a2dp 的流,它甚至可以工作吗?
A2DP 规范:https ://www.bluetooth.org/docman/handlers/DownloadDoc.ashx?doc_id=8236
谢谢你的帮助!