Поделиться через


Использование устройства связи

В Windows 7 панель управления мультимедиа Windows Mmsys.cpl предоставляет новую вкладку "Связь". Эта вкладка содержит параметры, позволяющие пользователю задавать параметры, определяющие, как система управляет устройством связи. Устройство связи используется в основном для размещения или приема телефонных звонков на компьютере. Для компьютера с одним устройством отрисовки (динамиком) и одним устройством записи (микрофоном) эти звуковые устройства также служат устройствами связи по умолчанию. Когда пользователь подключает новое устройство, например USB-гарнитуру, система выполняет автоматическое обнаружение ролей устройства путем поиска параметров конфигурации, заполненных изготовителем оборудования. Если система определяет, что устройство лучше подходит для общения, система назначает роль электронной связи устройству. Для этих устройств windows 7 Mmsys.cpl предоставляет параметр "Устройство связи по умолчанию", позволяющее пользователю выбрать устройство связи для каждого устройства для отрисовки звука (вкладка "Воспроизведение ") и записи звука (вкладка "Запись "). Система выполняет автоматическое обнаружение ролей, но не задает определенное устройство для обмена данными. Это необходимо сделать пользователем. Новая роль eCommunications позволяет приложению различать устройство, выбранное пользователем для обработки телефонных звонков и устройства, которое будет использоваться в качестве мультимедийного устройства (воспроизведение музыки). Например, если у пользователя есть гарнитура и динамик, подключенный к компьютеру, система назначает роль eConsole динамику и роль связи гарнитуре. После того как пользователь выбирает гарнитуру, которая будет использоваться в качестве устройства связи, для разработки приложения связи, вы можете настроить гарнитуру специально для отрисовки аудиопотока. Приложение, которое пользователь не может изменить роль устройства, назначенную системой. Дополнительные сведения о ролях устройств см. в разделе "Роли устройства".

Приложения связи, такие как voIP и приложения unified Communication, размещают и получают телефонные звонки через компьютер. Например, приложение VoIP может назначить поток, содержащий кольцевое уведомление конечной точке набора устройств связи для отрисовки звуковых потоков. Кроме того, приложение может открывать входные и выходные потоки голосовых данных на устройствах конечной точки записи и отрисовки, которые задаются как устройства связи.

Чтобы интегрировать возможности коммуникации в приложения, можно использовать следующее:

  • API MMDevice — чтобы получить ссылку на конечную точку устройства связи.
  • WASAPI — для отрисовки и записи аудиопотоков через устройство связи. Операционная система считает, что поток, открытый на устройстве связи, является потоком связи.

Приложение связи перечисляет устройства и обеспечивает управление потоками для потока коммуникации (отрисовка или запись) таким же образом, как и управление потоком, не входящие в связь, с помощью ОСНОВНЫХ API аудио.

Одна из функций, которые можно интегрировать в приложение для коммуникации, — это утка или потоковая аттестация. Это поведение определяет, что должно произойти с другими звуками при открытии потока коммуникации, например при получении телефонного звонка на устройстве связи. Система может отключить или снизить громкость звука потока, отличного от связи, в зависимости от выбора пользователя. Звуковая система создает события утки при открытии или закрытии потока связи для отрисовки или записи потоков. По умолчанию операционная система предоставляет уток по умолчанию. Приложение мультимедиа может заменить поведение по умолчанию и обрабатывать эти события для предоставления настраиваемого интерфейса для утих.

В следующих разделах описано, как использовать API Core Audio для предоставления пользовательского интерфейса уток.

Получение ссылки на конечную точку устройства связи

Чтобы использовать устройство связи, прямой клиент WASAPI должен перечислить устройства с помощью перечислителя устройств. Получите ссылку на конечную точку устройства связи по умолчанию, вызвав IMMDeviceEnumerator::GetDefaultAudioEndpoint. В этом вызове приложение должно указать связь в параметре Role , чтобы ограничить перечисление устройств на устройствах связи. После получения ссылки на конечную точку устройства можно активировать службы, которые область для конечной точки, вызвав IMMDevice::Activate. Например, можно передать идентификатор службы IID_IAudioClient для активации объекта звукового клиента и использовать его для управления потоками, идентификатор IID_IAudioEndpointVolume для получения доступа к элементам управления томами конечной точки устройства связи или идентификатору IID_IAudioSessionManager для активации диспетчера сеансов, который позволяет взаимодействовать с подсистемой политики конечной точки. Сведения об операциях потоков см. в разделе "Управление потоками".

Используя ссылку IMMDevice , вы также можете получить доступ к хранилищу свойств для конечной точки устройства. Эти значения свойств, такие как понятное имя устройства и имя производителя, заполняются изготовителем оборудования и позволяют приложению определить характеристики устройства связи. Дополнительные сведения см. в разделе "Свойства устройства".

В следующем примере кода возвращается ссылка на конечную точку устройства связи по умолчанию для отрисовки аудиопотока.

IMMDevice *defaultDevice = NULL;

hr = CoCreateInstance(__uuidof(MMDeviceEnumerator), NULL,
            CLSCTX_INPROC_SERVER, 
            __uuidof(IMMDeviceEnumerator), 
            (LPVOID *)&deviceEnumerator);

hr = deviceEnumerator->GetDefaultAudioEndpoint(eRender, 
            eCommunications, &defaultDevice);

Управление потоками