同时通过蓝牙发送音乐和附加数据?

时间:2014-08-20 00:39:54

标签: java android bluetooth electronics

情景:

我的朋友和我正在开发一种带有蓝牙接收器的产品,该接收器连接到扬声器系统。目前,我们可以与此单元配对,并通过蓝牙连接流式传输音乐。我想开发一个应用程序,我可以用来控制音乐流媒体时我们单元的不同设置。我的应用程序需要能够做到这一点,无论哪个应用程序通过蓝牙(本地媒体播放器,spotify,潘多拉等)流式传输音乐。我认为这可能是一个权限问题,而不是带宽问题......

我需要知道:

是否可以将控制数据和音频流同时发送到同一个蓝牙接收器?如果是这样,有人可以指出一个有助于我实现这一目标的好策略(例如,用于控制数据的协议)?如果不可能,有人可以推荐一种更好的方法来控制目标设备吗?

很抱歉,如果这个问题有明显的答案,我无法在Android开发者文档中找到我想要的内容。

谢谢!!!

1 个答案:

答案 0 :(得分:1)

根据我使用蓝牙的知识,最好的方法是将控制数据包发送到与音频数据包相同的数据包流中,附加一个唯一的ID,以使发言人能够识别和操作控制包。

理想情况下,您需要在专为控制而构建的扬声器上安装连接流。这样你的应用就可以连接到那个并发送连接数据,然后说话者会解释。

扬声器的伪代码看起来像

connectionURL = "btspp://localhost: " + uuid + ";name=control";
bluetoothConnection.open(url);

while (true) {
   // waits on this line until something tries to connect to it.
   bluetoothConnection.acceptAndOpen();

   /* Process control information */
}

至于暂停来自第三方应用的音乐,最简单的方法是让应用Request Audio Focus暂停并释放它以恢复。或者,您可以发送一个控制数据包来取消蓝牙音频流,但这可能会变得非常复杂。