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


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

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

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

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

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

Коммуникационное приложение перечисляет устройства и обеспечивает управление потоками для коммуникационного потока (отрисовки или записи) таким же образом, как и потока, не относящегося к коммуникации, с помощью Core Audio API.

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

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

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

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

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

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

IMMDevice *defaultDevice = NULL;

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

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

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