需要在 Android/非 Android 设备之间通过 A2DP 发送/接收音频的想法

use*_*267 4 audio android bluetooth a2dp

我需要能够通过蓝牙发送和接收音频,似乎 A2DP 就是执行此操作的工具

使用此处给出的代码,我设法让我的手机检测并与远程蓝牙设备配对,然后建立 A2DP 连接,通过蓝牙将 Android 设备的所有音频输出发送到远程设备

我以前能够通过 RFCOMM 与同一远程蓝牙设备进行这种两种方式的数据通信(尽管 Android 手机需要启动通信,但我无法通过远程设备进行此操作,尽管我知道这是可能的)。一旦 RFCOMM 链路建立,Android 设备就可以向远程设备发送数据,也可以从远程设备接收数据

我现在需要的是类似的东西,但是对于音频(最好使用 A2DP,但我愿意使用其他任何东西,只要它能完成工作)。在窥探SO时,我得到提示,通过A2DP在手机上接收音频数据(至少是未root的普通手机,root对我来说不是一个选项)是不可能的(例如,参见此处)。但我也看到过可以完全通过蓝牙打电话的耳机(实际上是无线的,我假设它一定是蓝牙)。例如,来电时,您只需按下蓝牙耳机上的按钮,即可通话并收听对方的声音。如果手机不能用作音频接收器,那么耳机如何做到这一点?

我需要一些关于如何编写 Android 应用程序以通过蓝牙发送和接收音频数据的想法(为简单起见,让我们将其视为类似于Bluechat 示例程序,但涉及音频而不是文本)。有可能吗(通过java)?只能通过NDK吗?市场上的设备是如何做到的?它与 A2DP 的配置文件不同吗?

PS:我的测试设备是带有 Gingerbread 的 Samsung Galaxy 2(手机)和带有 KitKat 的 Asus Nexus 7(平板电脑)。顺便说一句,远程蓝牙设备(它是一个开发板)附带了一个示例项目,该项目应该将该板变成 A2DP 音频源。如果我使用手机和平板电脑的内置蓝牙设置在板上运行此示例项目,我可以与远程板配对,但 Android 设备不会接收任何音频。

jak*_*ket 5

有两种不同的 A2DP 配置文件,A2DP sourceA2DP sinkA2DP sourceAndroid 支持该配置文件,因此您可以将设备中的音乐传输到像蓝牙扬声器一样的接收器。据我所知,该A2DP sink配置文件未启用,这就是为什么您无法将音乐传输到手机并使其充当扬声器的原因。我只是通过谷歌搜索才知道这一点,所以事情可能已经改变了。

可以A2DP sink通过编辑/etc/bluetooth/audio.conf并重新启动手机来启用配置文件。不幸的是,这会产生禁用配置文件的副作用A2DP source,因此无法在广泛分发的应用程序中使用。另一个缺点是没有太多的 Java 软件堆栈来使用该配置文件,因此您必须做大量工作才能使事情顺利进行。

回答你的问题,为什么耳机能够连接到Android,那是因为耳机使用了不同的配置文件Headset profile (HSP),称为 ,通常用于耳机,或者Handsfree profile (HFP)通常用于汽车。两种配置文件都有两个端:客户端和网关端(移动电话)。这两个配置文件的音频质量均被视为语音质量。8 或 16kHz 采样率和蹩脚的编解码器。还有很多用于接听/拨打电话等的协议...我不确定您是否可以在没有有效连接到电话网络的情况下传输音频。