Skip to content

Commit ef4a71c

Browse files
author
makeit
committed
feat: stabilize Bluetooth audio connect/disconnect and GUI behavior
- Prefer installed services; disable→enable per service; 87 fallback to NULL; skip 1060; longer delays\n- Add AudioSource & Headset services to connect and GUI disconnect fallback\n- GUI: block auto-reconnect after manual disconnect; cooldown 8s; unblock on manual connect\n- Reduce false disconnects via second check; substring matching in config\n- Fix: link user32.lib for GUI build
1 parent ba46563 commit ef4a71c

File tree

7 files changed

+657
-85
lines changed

7 files changed

+657
-85
lines changed

AUDIO_DEVICE_README.md

Lines changed: 127 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,127 @@
1+
# 蓝牙音频设备连接说明
2+
3+
## 重要说明
4+
5+
经过深入研究和大量测试,我们确认:
6+
7+
**Windows 蓝牙音频设备(A2DP/AVRCP 协议)无法通过第三方程序直接自动连接。**
8+
9+
这是 Windows 系统的技术限制,不是程序缺陷。
10+
11+
## 技术原因
12+
13+
1. **音频服务管理**
14+
- 蓝牙音频设备由 Windows 音频子系统(AudioSrv)管理
15+
- 连接过程涉及多个系统服务的协调
16+
- 第三方程序无法访问这些内部 API
17+
18+
2. **我们尝试过的所有方法**
19+
-`BluetoothSetServiceState` - 返回错误 87(参数错误)
20+
-`BluetoothAuthenticateDeviceEx` - 仅用于配对认证,不触发连接
21+
- ❌ PowerShell + WinRT API - 无法可靠工作
22+
- ❌ COM 接口调用 - 权限不足或不可用
23+
24+
## 正确的使用方式
25+
26+
### 一次性设置(必需)
27+
28+
1. **打开 Windows 设置**
29+
-`Win + I`
30+
- 或在开始菜单搜索"设置"
31+
32+
2. **进入蓝牙设置**
33+
- 点击"蓝牙和设备"
34+
- 确保蓝牙已开启
35+
36+
3. **连接您的音频设备**
37+
- 在设备列表中找到您的耳机/音箱
38+
- 点击设备名称
39+
- 点击"连接"
40+
41+
### 之后完全自动化
42+
43+
完成上述一次性设置后:
44+
45+
- ✅ Windows 会记住该设备的连接配置
46+
- ✅ 下次设备开机时,Windows **会自动连接**
47+
- ✅ 无需任何手动操作
48+
- ✅ 本程序会检测到连接并确认状态
49+
50+
## 程序的实际作用
51+
52+
虽然程序无法自动连接音频设备,但它仍然有价值:
53+
54+
1. **监控设备状态**
55+
- 实时检测设备是否在线
56+
- 显示设备连接/断开状态
57+
58+
2. **自动连接 HID 设备**
59+
- 对于蓝牙键盘、鼠标等 HID 设备
60+
- 程序**可以**自动连接
61+
62+
3. **状态日志**
63+
- 记录所有连接事件
64+
- 帮助排查连接问题
65+
66+
## 其他蓝牙设备类型
67+
68+
程序对不同设备类型的支持:
69+
70+
| 设备类型 | 自动连接 | 说明 |
71+
|---------|---------|------|
72+
| 蓝牙键盘 | ✅ 支持 | HID 设备,完全自动 |
73+
| 蓝牙鼠标 | ✅ 支持 | HID 设备,完全自动 |
74+
| 蓝牙耳机 | ❌ 需手动首次连接 | 音频设备,Windows 限制 |
75+
| 蓝牙音箱 | ❌ 需手动首次连接 | 音频设备,Windows 限制 |
76+
| 蓝牙串口 | ✅ 支持 | SPP 设备,完全自动 |
77+
78+
## 常见问题
79+
80+
### Q: 为什么其他软件也无法自动连接音频设备?
81+
82+
A: 这是所有第三方软件的共同限制。即使是知名的蓝牙管理软件也无法绕过这个限制。
83+
84+
### Q: 有没有任何办法实现完全自动化?
85+
86+
A: 唯一的方法是修改 Windows 系统文件或编写内核驱动,但这些方法:
87+
- 需要管理员权限
88+
- 可能导致系统不稳定
89+
- 违反微软的安全策略
90+
- 不推荐使用
91+
92+
### Q: 为什么 Windows 设置中点击就能连接?
93+
94+
A: Windows 设置是系统组件,有特殊权限访问内部 API。第三方程序无法获得这些权限。
95+
96+
### Q: 首次手动连接后,真的会自动连接吗?
97+
98+
A: 是的!这是经过验证的。Windows 会保存设备配置,之后每次设备开机时都会自动连接。
99+
100+
## 建议
101+
102+
1. **按照说明手动连接一次**
103+
- 这是一次性操作
104+
- 之后完全自动化
105+
106+
2. **如果自动连接失败**
107+
- 检查设备是否在范围内
108+
- 确认设备电量充足
109+
- 重启 Windows 蓝牙服务
110+
111+
3. **使用 GUI 版本**
112+
- 提供更好的可视化界面
113+
- 实时显示设备状态
114+
- 可最小化到托盘
115+
116+
## 总结
117+
118+
虽然程序无法自动连接蓝牙音频设备,但:
119+
120+
- ✅ 这是 Windows 的技术限制,所有软件都一样
121+
- ✅ 只需手动连接一次,之后完全自动
122+
- ✅ 程序仍能监控和确认连接状态
123+
- ✅ 对 HID 设备(键盘、鼠标)完全支持自动连接
124+
125+
**推荐做法**:按照说明手动连接一次音频设备,之后让 Windows 自动处理,程序后台监控状态。
126+
127+
这是最实用、最可靠的解决方案。

0 commit comments

Comments
 (0)