【问题标题】:How to connect to a bluetooth a2dp device?如何连接到蓝牙 a2dp 设备?
【发布时间】:2012-09-22 09:21:21
【问题描述】:

我正在尝试将运行 android 4.1 的 android 设备与支持 a2dp 的音频接收器配对。我可以在蓝牙设置屏幕上毫无问题地做到这一点,但我正在努力在代码中做到这一点。

基本上我能够发现设备,但我无法通过套接字连接到它。也许我使用了错误的 UUID 或者我应该使用预定义的 android.bluetooth.BluetoothA2dp 类。这是我正在做的事情:

UUID uuid = UUID.fromString("00001101-0000-1000-8000-00805F9B34FB");
socket = device.createInsecureRfcommSocketToServiceRecord(uuid);
socket.connect();

但我得到一个异常,指出它无法连接。

java.io.IOException: Service discovery failed
at android.bluetooth.BluetoothSocket$SdpHelper.doSdp(BluetoothSocket.java:403)
at android.bluetooth.BluetoothSocket.connect(BluetoothSocket.java:213)

我也尝试使用设备通过device.getUuids() 提供的 UUID 进行连接,但这些都无助于连接到 a2dp 设备。

任何有关如何连接到 a2dp 设备的帮助将不胜感激。谢谢。

【问题讨论】:

  • 您可以搜索并与此设备配对
  • 搜索设备时可以找到设备。我的印象是创建与设备的套接字连接会自动将它们配对。在设置中查找和配对是没有问题的。
  • 嗨,莫蒂兹,请问你有没有遇到过这个问题?我目前正在尝试将 4.2+ 的 Android 设备连接到 A2DP 蓝牙扬声器,并且也在努力解决如何使用它。感谢您提前提供任何帮助。
  • 嗨@Ted。不幸的是,我的研究没有得出一个成功的结论。
  • 如何为蓝牙创建套接字?

标签: android bluetooth a2dp


【解决方案1】:

A2DP 不是通过 RFCOMM 完成的,因此您不能使用 createRfcommSocket API。数据通过具有指定协议复用器 ID(一个用于控制,另一个用于流数据)的 L2CAP 流直接传输。

【讨论】:

  • 您能否详细介绍一下如何设置连接?
  • 不简单。您需要打开一个 L2CAP 套接字,这是使用 android java API 无法实现的。您必须使用 C 进行实际的 BlueZ 编程。打开 L2CAP 套接字后,您必须实现 AVDTP 协议。您可以在 BlueZ 源代码中找到开源实现。但除非您能够访问蓝牙规范,否则这将很难。
  • 嗯。不是我希望的答案。但是感谢您加入。:)
猜你喜欢
  • 1970-01-01
  • 2014-10-04
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-01-20
  • 1970-01-01
相关资源
最近更新 更多