问题标签 [hfp]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
0 回答
898 浏览

android - 调用 startBluetoothSco 后使用 AudioTrack 在设备上播放音频的代码流程是什么?

我正在使用 BluetoothSco 将带有 Android OS 4.1 的移动设备连接到蓝牙设备(设备类 = 1792)来路由音频(语音)。我已经成功使用 createRfcommSocketToServiceRecord 设置了 BluetoothSocket。

我的设置:

使用频率 = 8000 的 AudioRecord 和 AudioTrack,MediaRecorder.AudioSource.MIC 作为 AudioRecord 的源,AudioManager.STREAM_VOICE_CALL 用于 AudioTrack,并尝试 MODE_IN_COMMUNICATION 和 MODE_IN_CALL 用于 AudioManager 模式。

没有成功。我的设备上没有音频。

我的问题:

  1. 我应该使用 MODE_IN_COMMUNICATION 还是 MODE_IN_CALL?
  2. 我需要切换到 MODE_NORMAL 或其他模式才能在设备上播放吗?
  3. 你能推荐一个在设备上播放 SCO 音频的代码流吗?
  4. 你能指出一些工作代码来审查吗?

笔记:

  1. 设备上禁用了“媒体音频”配置文件 (A2DP) - 仅启用了“呼叫音频”配置文件 (HFP)。

很乐意分享一些代码,但鉴于现有的 SO Q&As,它可能看起来是一样的。

问候。

0 投票
1 回答
4811 浏览

android - 蓝牙免提客户端音量控制

我有一个使用 hfp 充当免提客户端设备的 android 设备。

使用以下代码:

我能够接听电话,并且扬声器和麦克风按预期工作。

我的问题是我似乎无法控制音量。

我尝试使用以下代码行来查找正确的流,但它们似乎都不起作用。

我在类中跟踪了从手机发送到客户端的音量命令,HeadsetClientStateMachine以下链接中的第 1822 行:来自 lolipop 的 HeadsetClientStateMachine

当我改变手机的音量时,我确实看到日志显示声音的更新值,这意味着setStreamVolume()正在调用该方法,但音量没有改变。

有谁知道可能导致此问题的原因是什么?

编辑:

我仍在寻找答案,现在正在寻找音频 HAL 实现。我怀疑 HAL 和音频驱动程序之间的链接在某种程度上不正确......我对低级实现知之甚少,也不确定我应该寻找什么。

0 投票
1 回答
251 浏览

android-bluetooth - 如何通过蓝牙读取手机状态

我尝试开发一个连接到手机的应用程序,并像智能手表一样读取手机状态(来电、去电等)。我使用智能手表并连接到我的手机,然后打开 android studio 来查看 logcat。我了解手表使用蓝牙 Obex 服务、Hfp、a2dp Rfcomm 服务,但我没有找到任何使用它们的示例或说明。我能怎么做?谢谢。

0 投票
1 回答
1383 浏览

android - 将信息娱乐设备模拟为 HFP 客户端

Android lollipop 正在我的目标板上运行。

我的板子和手机通过蓝牙配对。如果我在我的安卓手机上接到电话,我如何用我的板子模拟它来接听和拒绝电话?

在我接到电话时,HFP 工作正常,

我只是想用 Board UI 来模拟它来接听和拒绝来电。

谢谢。

0 投票
1 回答
1082 浏览

bluetooth - Bluez5.7 耳机已配对但未连接 HSP/HFP

我需要您帮助解决 Bluez5.7 耳机连接问题。

目标是使用兼容 WBS 的耳机实现宽带语音。要支持宽带语音,我知道应该集成HFP1.6。为了支持 HFP 1.6 Profile,我们集成了 Bluez 5.7(或 5.5.7)和 Ofono 1.16、dBus v 1.4.16。

主机处理器使用 UART(用于信令)和 TDM(用于 I2S/PCM 接口中的音频数据)连接到 BT 芯片

我可以按以下方式打开 hci 接口: • bccmd -t bcsp -d /dev/ttyS1 -b 115200 psload -r /etc/bluetooth/platform_8810.psr(固件下载) • hciattach -s 115200 ttyS1 bcsp 115200 noflow • hciconfig hci0 noauth • hciconfig hci0 up • hciconfig hci0 noauth

扫描也成功使用:“hcitool scan”</p>

配对也成功使用:“hcitool cc && hcitool auth”</p>

对于连接,我使用 Bluez5-7 /usr/lib/bluez/test/ 中提供的测试设备脚本

以下是我们正在使用的耳机支持的 ​​UUID(我使用 bluetoothctl 工具看到了这个)

[蓝牙]# info 48:C1:AC:29:7F:27 Device 48:C1:AC:29:7F:27 Class: 0x240404 Icon: audio-card Paired: yes Trusted: yes Blocked: no Connected: no LegacyPairing:否 UUID:耳机 (00001108-0000-1000-8000-00805f9b34fb) UUID:音频接收器 (0000110b-0000-1000-8000-00805f9b34fb) UUID:A/V 遥控器 (0000110e-0000-100500-8000-0b34fb) UDUID:免提 (0000111e-0000-1000-8000-00805f9b34fb) UUID:PnP 信息 (00001200-0000-1000-8000-00805f9b34fb) 模式:蓝牙:v0055p001Bd0610

如果我给:./test-device connect 48:C1:AC:29:7F:27 "hsp"

在 BluezDaemon 上下文中,它转到

蓝牙 [523]: src/device.c:connect_profiles()

蓝牙 [523]:src/device.c:connect_profiles() /org/bluez/hci0/dev_48_C1_AC_29_7F_27 00001108-0000-1000-8000-00805f9b34fb,客户端:1.6

然后转到 src/device.c:find_connectable_service()

它通过此函数中的注册服务循环。(我已经打印并看到了这个)

Bluez注册了2个服务,即audio-sink(0000110b-0000-1000-8000-00805f9b34fb)和A/V Remote Control(0000110e-0000-1000-8000-00805f9b34fb)。

在此服务列表中,HFP 或 HSP 不存在,因此它在不执行任何连接函数的情况下返回。

在我执行测试脚本的控制台中,我收到以下错误:

请帮忙 !

0 投票
1 回答
1324 浏览

bluetooth - A2DP的音频输出和HFP的音频输入可以同时使用吗?

我想开发应用程序来从蓝牙耳机的麦克风输入语音并输出到蓝牙扬声器。

我认为使用 HFP 输入和 A2DP 输出。两个profile可以同时使用吗?

0 投票
0 回答
514 浏览

android - How to use HPF client in android L or higher version with bluedroid?

I have a problem when trying to implement HFP client. Usually the android phone works as HFP ag role. But I want to make my android device work as the HF role, such as a normal headset. It seems that Google has added the HFP client code but I failed to make it. Now the A2DP works well, as it works as sink. But when I tried HFP, I can hear nothing in both side. The auto car project must finish the function i want but i cant find its source code. In addition, my test device is nexus 5 with android 5.0 and I can modify the rom if necessary. can anyone help? Just give a abc step. Thanks a lot!

0 投票
1 回答
4637 浏览

python - ofono dbus 内省:找不到方法

根据ofono 1.17的文档:

https://github.com/rilmodem/ofono/tree/master/doc

免提有两个接口:

  • org.ofono.Handsfree
  • org.ofono.HandsfreeAudioManager

我需要访问它们才能使 pulseaudio 正常工作。它返回此错误:

E: [pulseaudio] backend-ofono.c: 无法使用 ofono 注册为免提音频代理:org.freedesktop.DBus.Error.UnknownMethod:方法“注册”,在接口“org.ofono.HandsfreeAudioManager”上签名为“oay”不存在

但是该方法存在(根据上面的文档)并且具有该签名:对象路径,数组{字节}。

因此,我猜它是不可访问的,而不是不存在的。我编写了一个简单的 Python 脚本来列出可用的服务,并且 org.ofono 就在那里。

然后我添加了列出对象的代码:

但我收到以下错误:

dbus.exceptions.DBusException:org.freedesktop.DBus.Error.NameHasNoOwner:无法获得名称“org.ofono.HandsfreeAudioManager”的所有者:没有这样的名称

dbus.exceptions.DBusException:org.freedesktop.DBus.Error.ServiceUnknown:名称 org.ofono.HandsfreeAudioManager 不是由任何 .service 文件提供的

我还在 /etc/dbus-1/system.d/ofono.conf 中检查了 dbus 的用户策略:

当然,我以用户“用户”的身份运行 ofono 和上面的代码。我的想法不多了......我应该怎么做才能解决这个问题?

0 投票
2 回答
1742 浏览

ios - 如何检测 iOS 中是否连接了 HFP 或 A2DP?

我正在开发一个可以通过 HFP 设备播放音乐的项目。但是这里有一个问题,我想在播放音乐时检测是否连接了 HFP 或 A2DP。

现在我正在使用 AVFoundation 框架来执行此操作。这是代码:

效果很好,但又带来一个问题:在播放音乐时,使用这种方法检测HFP连接会导致音乐播放中断约两秒。

所以我尝试了另一种可以减少检测HFP连接效果的方法。我正在使用旗帜

指示是否连接了 HFP 或 A2DP。我使用以前的方法只检测一次连接(当应用程序启动时)并将结果保存到 isHFPConnectedFlag 中。更重要的是,我观察 AudioSessionRouteChange 来同步连接状态:

当路由更改原因是AVAudioSessionRouteChangeReasonNewDeviceAvailable或者AVAudioSessionRouteChangeReasonOldDeviceUnavailable我可以知道 HFP 连接或断开连接。不幸的是,当我在 iPhone 中连接一些 HFP 时,系统不会发布此通知,因此在这种情况下我无法检测到连接。

有谁知道实现这一点的原因或更好的方法(检测 HFP 连接而不中断音乐播放)?

0 投票
0 回答
705 浏览

android - 将安卓设置为蓝牙耳机

我是蓝牙的新手,如果有人能解释我的想法和路线是否正确以及如何进一步进行,我将不胜感激。

我正在研究在 AM437x 上运行并支持 android kitkat(4.4) 的 Android 设备(平板电脑)。我想为其实现蓝牙耳机功能,以便用户可以通过连接的安卓手机使用蓝牙拨打和接听电话。android 蓝牙堆栈 (Bluedroid) 仅支持音频网关角色中的 HFP 配置文件。我也想要 HFP-HandsFree 角色。此配置文件在 Bluez/Bluetopia 堆栈中可用。我们可以在 Bluedroid 上导入它们的源代码吗?如果是,则需要进行哪些更改。

更进一步,我已经有了 A2DP 接收器角色,在 Bluedroid 上实现了 SBC 解码器,这是 HFP-HF 角色的要求之一。下一步我需要将设备广播为耳机,因此我们需要将 BluetoothClass 主类设置为音频/视频(值为 1024 或 0x400),并将蓝牙类设备类设置为音频/视频可穿戴耳机(值为 1028 或0x404)。所以其他蓝牙设备会将该设备识别为音频/视频耳机。我该如何改变这些?建立连接后,手机可以与 Cuff 发起免提通信。

一旦建立连接,据我了解,将有三个级别的连接,即服务级别连接、编解码器连接和音频连接。如果我们想知道这些连接是如何管理的,你知道我们应该研究哪里吗?