场景:
我和我的 friend 们正在开发一种带有连接到扬声器系统的蓝牙接收器的产品。目前我们可以与这个装置配对并通过蓝牙连接播放音乐。我想开发一个应用程序,我可以在播放音乐时使用它来控制我们设备上的不同设置。无论哪个应用程序通过蓝牙播放音乐( native 媒体播放器、spotify、pandora 等),我的应用程序都需要能够执行此操作。我认为这可能是一个权限问题,而不是带宽问题......
我需要知道:
是否可以将控制数据和音频流同时发送到同一个蓝牙接收器?如果是这样,有人可以指出一个好的策略来帮助我完成这个(例如,控制数据使用什么协议(protocol))?如果不可能,有人可以推荐一种更好的方法来控制目标设备吗?
我无法在 Android 开发者文档中找到我要找的内容。
最佳答案
根据我在使用蓝牙方面的知识,最好的方法是在与音频数据包相同的数据包流中发送控制数据包,附加一个唯一的 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暂停并释放它以恢复。或者,您可以发送一个控制数据包来取消蓝牙音频流,但恢复起来可能会变得非常复杂。
关于java - 同时通过蓝牙发送音乐和附加数据?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25395094/