1

我正在尝试将音频流式传输到 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

谢谢你的帮助!

4

1 回答 1

1

更新:

这在 32feet.net 库中是不可能的,您只能使用 32feet.net 中的 setService 方法调用将设备设置为与 Microsoft 音频服务通话

www.nudoq.org/#!/Packages/32feet.NET/InTheHand.Net.Personal/MicrosoftSdpService/M/SetService

此 MS 服务管理到设备的 A2DP 输出。无法使用 C# 中的此库将音频从代码直接输出到蓝牙设备。

于 2015-11-13T23:29:09.920 回答