问题标签 [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.
android - 设备通过蓝牙连接时处理多个呼叫
设备通过蓝牙连接到汽车的主机。有一个正在进行的呼叫。然后我接到另一个电话。
我的问题是,我应该如何在不打扰第一个电话的情况下显示或通知用户第二个来电?
android - 当在 android 的 config.xml 中启用 hfpclient 然后尝试配对设备时,我看到 hfpclient 的 JNI 接口崩溃
08-29 14:16:35.703 4697 4697 I crash_dump64:从墓碑获取输出 fd,类型:kDebuggerdTombstone
08-29 14:16:35.704 3147 3147 I /system/bin/tombstoned:收到 pid 3559 的崩溃请求 08-29 14:16:35.704 4697 4697 I crash_dump64:执行进程 3450 的转储(目标 tid = 3559)08- 29 14:16:35.711 3636 3636 D StrictMode:StrictMode 策略违规:android.os.strictmode.InstanceCountViolation:com.android.settings.SubSettings 类;实例=2;限制=1 08-29 14:16:35.711 3636 3636 D StrictMode:在 android.os.StrictMode.setClassInstanceLimit(StrictMode.java:1)
08-29 14:16:35.722 4697 4697 F 调试:
08-29 14:16:35.722 4697 4697 F 调试:构建指纹:'Android/proline_basic_proto3/proline_basic_proto3:9/2.0.0-ga-rc4/root08230119:eng/dev-keys' 08-29 14:16:35.722 4697 4697 F 调试:修订:'0' 08-29 14:16:35.722 4697 4697 F 调试:ABI:'arm64' 08-29 14:16:35.722 4697 4697 F 调试:pid:3450,tid:3559,名称: BT 服务调用 >>> com.android.bluetooth <<< 08-29 14:16:35.723 4697 4697 F DEBUG:信号 6 (SIGABRT),代码 -6 (SI_TKILL),故障地址 --------
08-29 14:16:35.723 4697 4697 F 调试:中止消息:'java_vm_ext.cc:542] JNI 检测到应用程序错误:无法调用 void com.android.bluetooth.hfpclient.NativeInterface.onConnectionStateChanged(int,int, int, byte[]) 在 java.lang.Class 的实例上'
08-29 14:16:35.723 4697 4697 F 调试:x0 0000000000000000 x1 0000000000000de7 x2 0000000000000006 x3 0000000000000008
08-29 14:16:35.723 4697 4697 F 调试:x4 fefff69db9b60667 x5 fefff69db9b60667 x6 fefff69db9b60667 x7 7f7ffffffff7f7f
08-29 14:16:35.723 4697 4697 F 调试:x8 0000000000000083 x9 0000f79eba2b7a68 x10 fffffff87ffffbdf x11 0000000000000001
08-29 14:16:35.723 4697 4697 F 调试:x12 0000f79ea06813[172.909846] alloc_contig_range:[a7f00,a8285)PFNs 忙 38 x13 ffffffffffffffff ffffff ffffffff ffffff ffffff ff
08-29 14:16:35.723 4697 4697 F调试:X16 0000F79EBA2F02C8 X17 0000F79EBA22E2D8 [172.929388] ALLOC_CONTIG_RANGE:ALLOC_CONTIG_RANGE:[A7F00,A8285,A8285)
08-29 14:16:35.723 4697 4697 F 调试:x20 0000000000000de7 x21 0000000000000083 x22 0000f79eb32fd400 x23 0000f79e9e23c000
08-29 14:16:35.723 4697 4697 F 调试:x24 0000000000000000 x25 0000000000000012 x26 0000000000000005 x27 0000f79eb9906c13
08-29 14:16:35.723 4697 4697 F 调试:x28 0000f79eb9906ac7 x29 0000f79ea0681890
08-29 14:16:35.723 4697 4697 F 调试:sp 0000f79ea0681850 lr 0000f79eba222a90 pc 0000f79eba222abc
08-29 14:16:35.765 4697 4697 F 调试:
08-29 14:16:35.765 4697 4697 F 调试:回溯:
08-29 14:16:35.765 4697 4697 F 调试:#00 pc 0000000000021abc /system/lib64/libc.so(中止+124)
08-29 14:16:35.765 4697 4697 F 调试:#01 pc 000000000046adb0 /system/lib64/libart.so (art::Runtime::Abort(char const*)+1208)
08-29 14:16:35.765 4697 4697 F 调试:#02 pc 0000000000008d2c /system/lib64/libbase.so (android::base::LogMessage::~LogMessage()+724)
08-29 14:16:35.765 4697 4697 F 调试:#03 pc 00000000002e8908 /system/lib64/libart.so (art::JavaVMExt::JniAbort(char const*, char const*)+1656)
08-29 14:16:35.765 4697 4697 F 调试:#04 pc 00000000002e8a7c /system/lib64/libart.so (art::JavaVMExt::JniAbortV(char const*, char const*, std::__va_list)+108)
08-29 14:16:35.765 4697 4697 F 调试:#05 pc 00000000000fd5f8 /system/lib64/libart.so (art::(匿名命名空间)::ScopedCheck::AbortF(char const*, ...)+144 )
08-29 14:16:35.765 4697 4697 F 调试:#06 pc 00000000001015a8 /system/lib64/libart.so (art::(匿名命名空间)::ScopedCheck::CheckMethodAndSig(art::ScopedObjectAccess&, _jobject*, _jclass* , _jmethodID*, art::Primitive::Type, art::InvokeType)+1920)
08-29 14:16:35.765 4697 4697 F 调试:#07 pc 00000000000ffcb4 /system/lib64/libart.so (art::(匿名命名空间)::CheckJNI::CallMethodV(char const*, _JNIEnv*, _jobject*, _jclass*, _jmethodID*, std::__va_list, art::Primitive::Type, art::InvokeType)+756)
08-29 14:16:35.765 4697 4697 F 调试:#08 pc 00000000000ed5d4 /system/lib64/libart.so (art::(匿名命名空间)::CheckJNI::CallVoidMethodV(_JNIEnv*, _jobject*, _jmethodID*, std ::__va_list)+84)
08-29 14:16:35.765 4697 4697 F 调试:#09 pc 0000000000017ec0 /system/lib64/libbluetooth_jni.so (_JNIEnv::CallVoidMethod(_jobject*, _jmethodID*, ...)+120)
08-29 14:16:35.765 4697 4697 F 调试:#10 pc 000000000001d71c /system/lib64/libbluetooth_jni.so (android::connection_state_cb(RawAddress const*, bthf_client_connection_state_t, unsigned int, unsigned int)+268)
08-29 14:16:35.765 4697 4697 F 调试:#11 pc 000000000012b8d8 /system/lib64/libbluetooth.so (btif_hf_client_upstreams_evt(unsigned short, char*)+3488)
08-29 14:16:35.765 4697 4697 F 调试:#12 pc 0000000000116124 /system/lib64/libbluetooth.so (bt_jni_msg_ready(void*)+116)
08-29 14:16:35.765 4697 4697 F 调试:#13 pc 0000000000096aec /system/lib64/libchrome.so (base::debug::TaskAnnotator::RunTask(char const*, base::PendingTask*)+244)
08-29 14:16:35.766 4697 4697 F 调试:#14 pc 00000000000b0388 /system/lib64/libchrome.so (base::MessageLoop::RunTask(base::PendingTask*)+416)
08-29 14:16:35.766 4697 4697 F 调试:#15 pc 00000000000b0634 /system/lib64/libchrome.so (base::MessageLoop::DeferOrRunPendingTask(base::PendingTask)+52)
08-29 14:16:35.766 4697 4697 F 调试:#16 pc 00000000000b0a7c /system/lib64/libchrome.so (base::MessageLoop::DoWork()+380)
08-29 14:16:35.766 4697 4697 F 调试:#17 pc 00000000000b1e44 /system/lib64/libchrome.so (base::MessagePumpDefault::Run(base::MessagePump::Delegate*)+180)
08-29 14:16:35.766 4697 4697 F 调试:#18 pc 00000000000b0070 /system/lib64/libchrome.so (base::MessageLoop::RunHandler()+112)
08-29 14:16:35.766 4697 4697 F 调试:#19 pc 00000000000cd200 /system/lib64/libchrome.so (base::RunLoop::Run()+136)
08-29 14:16:35.766 4697 4697 F 调试:#20 pc 0000000000114334 /system/lib64/libbluetooth.so (run_message_loop(void*)+284)
08-29 14:16:35.766 4697 4697 F 调试:#21 pc 0000000000232874 /system/lib64/libbluetooth.so (work_queue_read_cb(void*)+92)
08-29 14:16:35.766 4697 4697 F 调试:#22 pc 0000000000230a90 /system/lib64/libbluetooth.so (run_reactor(reactor_t*, int)+320)
08-29 14:16:35.766 4697 4697 F 调试:#23 pc 0000000000230924 /system/lib64/libbluetooth.so (reactor_start(reactor_t*)+84)
08-29 14:16:35.766 4697 4697 F 调试:#24 pc 00000000002322f8 /system/lib64/libbluetooth.so (run_thread(void*)+184)
08-29 14:16:35.766 4697 4697 F 调试:#25 pc 0000000000083194 /system/lib64/libc.so (__pthread_start(void*)+36)
08-29 14:16:35.766 4697 4697 F 调试:#26 pc 00000000000233bc /system/lib64/libc.so (__start_thread+68)
08-29 14:16:35.776 4697 4697 I crash_dump64: type=1400 audit(0.0:53): avc: denied { read } for name="btopp.db-shm" dev="mmcblk2p12" ino=758 scontext=u :r:crash_dump:s0
一旦在 Android 的蓝牙 Apk 中启用了启动 hfpclient 服务的标志,然后当启用了标志的图像加载到设备上并与设备启动配对时,我在 JNI 界面中看到崩溃。
我从崩溃日志中看到的主要原因是:JNI DETECTED ERROR IN APPLICATION: can't call void com.android.bluetooth.hfpclient.NativeInterface.onConnectionStateChanged(int, int, int, byte[]) on instance of java .lang.Class'
我可以从上面的代码中验证 MethodID 是否已分配给变量。
此外,我已经在调用 CallVoidMethod() 的地方验证了相同的内容,即使在那里我也可以看到 method_onConnectionStateChanged 并没有失去它的范围。
所以,我不确定是什么导致了这个错误:JNI DETECTED ERROR IN APPLICATION: can't call void com.android.bluetooth.hfpclient.NativeInterface.onConnectionStateChanged(int, int, int, byte[]) on instance of java.语言类
c++ - 如何将蓝牙耳机与 Qt 库连接并管理输入/输出音频流
我有一个简单的应用程序,它应该能够在我的嵌入式设备上连接蓝牙耳机。我正在使用 qt 库(QBluetooth)连接蓝牙设备。耳机已正确配对,但我不知道一旦打开套接字(在 socketConnected() 函数中)如何管理音频。我不知道这是否是正确的方法。如何将音频文件发送到蓝牙耳机、管理音量或设置输入和输出音频电平?谢谢指教。
bluetoothMngmt.h
类 BluetoothMgmt:公共 QObject { Q_OBJECT
bluetoothMngmt.cpp
android - 是否可以在 HFP 配置文件中选择蓝牙音频编解码器?
通过在 Android 中启用开发人员选项,可以更改 A2DP 音频编解码器(SBC/aptx/aptxHD...)。以类似的方式,是否也可以在 HFP 配置文件中更改蓝牙音频编解码器(CVSD/mSBC)?
embedded-linux - Pulseaudio HFP 配置
我正在尝试使用嵌入式板和蓝牙 USB 加密狗开发 HFP 设备。我正在使用 Bluez 5.52、Pulseaudio 13.0、Ofono 1.31。
A2DP 配置文件可以很好地将音频从我的手机流式传输到嵌入式设备的音频插孔。HFP 有问题。在通话期间,从 Qt 程序自动开始使用 OfonoVcm,我只听到扬声器的声音,但没有声音到达远程电话。
在开始通话之前,我通过编程调用激活“headset_audio_gateway”配置文件:“pactl set-card-profile 2耳机_audio_gateway”。
如何为此设置 pulseaudio .pa 和 .conf 文件?
在调用之前,在我的接收器和源列表下方:
pactl list sources short
0 alsa_output.hw_0_0.monitor module-alsa-sink.c s16le 2ch 44100Hz SUSPENDED
1 alsa_input.hw_0_0 module-alsa-source.c s16le 2ch 44100Hz SUSPENDED 2 alsa_output.2.stereo-fallback.monitor module-alsa- card.c s16le 2ch 44100Hz 暂停
3 alsa_output.1.stereo-fallback.monitor module-alsa-card.c s16le 2ch 44100Hz 暂停
4 alsa_input.1.stereo-fallback module-alsa-card.c s24-32le 2ch 44100Hz 暂停
5 alsa_output.0.stereo-fallback.monitor module-alsa-card.c s16le 2ch 44100Hz SUSPENDED 6 alsa_input.0.stereo-fallback module-alsa-card.c s16le 2ch 44100Hz SUSPENDED pactl list 短
0 alsa_output.hw_0_0 module-alsa-sink.c s16le 2ch 44100Hz 暂停
1 alsa_output.2.stereo-fallback module-alsa-card.c s16le 2ch 44100Hz 暂停
2 alsa_output.1.stereo-fallback module-alsa-card.c s16le 2ch 44100Hz
暂停 3 alsa_output.0.stereo-fallback module-alsa-card.c s16le 2ch 44100Hz 暂停
如果您需要与我的实际 .pa 和 .conf Pulseaudio 配置相关的更多信息,请告诉我。
亲切的问候,
马泰奥
c# - 使用蓝牙 HFP 配置文件从耳机获取电池电量
我正在尝试使用免提配置文件 (HFP) 从 Windows 获取带有蓝牙 4.1 的耳机设备的电池电量。
我已经从我的 Android 手机中提取了蓝牙日志(能够获取电池电量),并且耳机正在使用 HFP 发送带有电池信息的 AT 命令(AT+IPHONEACCEV),这是从日志中提取的数据包之一(使用wireshark):
现在,我正在尝试使用 32feet (InTheHand.Net.Bluetooth) 库从我的 Windows C# 应用程序中的耳机获取此 AT 命令。为此,我尝试使用以下方式连接到耳机BluetoothService.Handsfree
:
执行代码时出现以下错误cli.Connect(device.DeviceAddress, BluetoothService.Handsfree);
:
System.Net.Sockets.SocketException: 'A socket operation failed because the destination host was down'
有了cli.Connect(device.DeviceAddress, BluetoothService.SerialPort);
它连接(所以主机没有关闭),但我没有从stream.ReadAsync
电话中得到任何回复。
我怎样才能做到这一点?谢谢!
python - 如何建立蓝牙HFP服务级连接
我正在尝试使用bluez 存储库中提供的 python 测试代码建立 HFP(免提配置文件)服务级别连接。
为了运行,该示例需要进行一些修改:
- 修复不推荐使用的导入语句:
=>
- 更改主循环对象:
=>
- 禁用音频,因为它与此测试无关:
- 编码发送到字节的命令:
=>
- 解码从缓冲区接收到的字节:
=>
- 将 BDADDR_ANY 更改为手机的地址:
此时示例运行,为了实际尝试连接,我添加了以下代码:
此时,我在以下行从 NewConnection() 收到错误:fd = fd.take()
查看代码,fd 似乎是一个简单的文件描述符,因此注释掉这一行有助于我继续前进。我现在面临的实际问题是在发送初始 AT 命令后我没有收到设备的回复(来自上面链接的第 78 行)。根据蓝牙 HFP 1.8 规范,这应该启动服务级别连接过程。我什至不确定我的命令是否正在发送到设备。
我还尝试了另一个更新的示例。这个能够通过套接字 (BluetoothSocket) 打开 RFCOMM 连接,但连接不断被重置。这是因为 _read_at() 函数(第 181 行)没有从设备接收到任何内容并超时。
android - 从 android 连接到蓝牙 HSP/HFP 服务
我正在尝试构建一个应用程序,该应用程序允许我接听来自我的 PC 的来电,到目前为止,我能够在 Python 中使用 Pybluez 宣传一项服务。
现在,我如何从 android 连接到该服务?
c++ - 如何使用 bluez 在 linux 上实现 HFP?
我想在 Linux 上实现 HFP。据我了解,我需要先在手机和计算机之间创建 SPP 连接才能交换一些设置。在 BT 规范中,有一个 spp 服务。这是我需要的还是我必须使用dbus?我可以使用串行通信发送 AT 命令吗?我在互联网上阅读了很多东西和 git 的源代码,但不知道如何解决 spp 的问题。
c - 如何与 OFONO 建立 SCO 连接?
我一直在尝试使用 bluez 和 ofono 在 linux 上构建免提配置文件应用程序。我已经通过 spd 注册了我的设备。我是这样连接手机的:
当我尝试调用它时:
我收到一个错误:
我究竟做错了什么?