基于Telephony页面的HID报告实现Teams麦克风静音的问题咨询
问题:通过HID Telephony页面的Phone Mute控制Microsoft Teams麦克风静音
我正在为一款可在Microsoft Teams中用作麦克风和扬声器的USB音频设备实现HID报告描述符。请问是否有开发者有过在Telephony页面下实现Phone Mute以控制Microsoft Teams麦克风状态的经验?我尝试了以下HID报告描述符,但从设备发送报告后,Microsoft Teams中的麦克风并未静音。我的问题是:如何通过发送上述报告使Microsoft Teams中的麦克风静音?
0x05, 0x0B, // Usage Page (Telephony) 0x09, 0x05, // Usage (Headset) 0xA1, 0x01, // Collection (Application) 0x85, 0x01, // Report ID (1) 0x15, 0x00, // Logical Minimum (0) 0x25, 0x01, // Logical Maximum (1) 0x09, 0x2F, // Usage (Phone Mute) 0x75, 0x01, // Report Size (1) 0x95, 0x01, // Report Count (1) 0x81, 0x06, // Input (Data,Var,Rel,No Wrap,Linear,Preferred State,No Null Position) 0x75, 0x07, // Report Size (7) 0x95, 0x01, // Report Count (1) 0x81, 0x03, // Input (Const,Var,Abs,No Wrap,Linear,Preferred State,No Null Position) 0xC0, // End Collection
问题排查与修复方案
- 修正Input字段属性:当前
Phone Mute输入项使用了0x81, 0x06(相对值Rel),但Teams需要的是**绝对状态(Abs)**报告。将这一行改为0x81, 0x02(Data,Var,Abs...),因为静音是二元绝对状态(静音/非静音),不是相对变化量。 - 确认报告发送逻辑:发送报告时需严格遵循格式:
- 触发静音:发送字节序列
0x01, 0x01(报告ID 0x01 + 第1位设为1) - 取消静音:发送字节序列
0x01, 0x00(报告ID 0x01 + 第1位设为0)
- 触发静音:发送字节序列
- 验证设备枚举状态:在Windows设备管理器的「人机接口设备」分类下,确认设备被识别为Telephony Headset设备,而非仅普通音频设备。
- 检查Teams设置:在Teams的「设备设置」中,将你的USB音频设备设为默认麦克风,并确保Teams已获得麦克风访问权限。
修正后的HID报告描述符
0x05, 0x0B, // Usage Page (Telephony) 0x09, 0x05, // Usage (Headset) 0xA1, 0x01, // Collection (Application) 0x85, 0x01, // Report ID (1) 0x15, 0x00, // Logical Minimum (0) 0x25, 0x01, // Logical Maximum (1) 0x09, 0x2F, // Usage (Phone Mute) 0x75, 0x01, // Report Size (1) 0x95, 0x01, // Report Count (1) 0x81, 0x02, // Input (Data,Var,Abs,No Wrap,Linear,Preferred State,No Null Position) 0x75, 0x07, // Report Size (7) 0x95, 0x01, // Report Count (1) 0x81, 0x03, // Input (Const,Var,Abs,No Wrap,Linear,Preferred State,No Null Position) 0xC0, // End Collection
内容的提问来源于stack exchange,提问作者Talia Blake
相关产品推荐
相关产品推荐

