我正在使用Linux(2.6.39内核(,并尝试找到一种使我可以将卷增量/减少命令从主机Linux OS发送到Jabra设备的方法。我在Windows和Ubuntu中看到了这种功能,其中控制PC的音量改变了Jabra卷。
我能够接受消费者从jabra到主机操作系统的HID HID增量/减少命令,但不相反。另外,我可以使用hidiocsusage ioctl将静音或钩命令发送到Jabra,但是我找不到官方USB使用表文档中的卷控件的相应用法ID。
。我不确定主机的卷命令是否确实是通过HID或其他API发送的,例如SND-USB-AUDIO内核模块。
我会感谢您的见解。
找出该混音器控件的名称和有效范围,然后只是执行:
system("amixer cset name='Master Playback Volume' 42");
或直接访问控件:
#include <stdio.h>
#include <stdlib.h>
#include <alsa/asoundlib.h>
static void check(int err, const char *f)
{
if (err < 0) {
fprintf(stderr, "%s failed: %sn", f, snd_strerror(err));
exit(EXIT_FAILURE);
}
}
#define CHECK(f) check(f, #f)
int main()
{
snd_ctl_t *ctl;
snd_ctl_elem_value_t *value;
CHECK(snd_ctl_open(&ctl, "hw:1", 0)); // card number
snd_ctl_elem_value_alloca(&value);
snd_ctl_elem_value_set_interface(value, SND_CTL_ELEM_IFACE_MIXER);
snd_ctl_elem_value_set_name(value, "Master Playback Volume");
snd_ctl_elem_value_set_integer(value, 0, 42);
CHECK(snd_ctl_elem_write(ctl, value));
snd_ctl_close(ctl);
return 0;
}