使用裝置角色

MMDevice API 支援裝置角色。 ERole 列舉會定義 MMDevice API 支援的裝置角色。

注意

雖然 MMDevice API 支援裝置角色,但 Windows Vista 中的使用者介面並未實作此功能的支援。

 

應用程式可以使用 MMDevice API 透過 IMMDeviceEnumerator::GetDefaultAudioEndpoint IMMNotificationClient::OnDefaultDeviceChanged 方法來支持裝置角色。 不過,Windows Vista 中的使用者介面不支援將個別角色指派給不同的裝置。 在 Windows Vista 中,使用者介面可讓使用者選取要轉譯的預設音訊裝置,以及要擷取的預設音訊裝置。 當使用者選取預設轉譯或擷取裝置時,系統會將這三個裝置角色 (eConsole、eMultimedia 和 eCommunications) 指派給該裝置。 應用程式無法變更指派給音訊端點裝置的角色。 操作系統只允許使用者指派裝置角色。

用戶端可以在每次將角色指派給音訊端點裝置時發生變更時,註冊自己以從 MMDevice API 接收通知。 當角色從一個裝置轉移到另一個裝置時,用戶端可以選擇是否要繼續播放(或錄製)其串流,或切換串流到另一個裝置。 根據預設,串流會繼續透過原始裝置播放(或錄製)。 在 Windows Vista 中,若要將串流切換至另一個裝置,客戶端必須刪除原始裝置上的數據流,並在新裝置上建立取代數據流。 在 Windows 7 中,用戶端可以接聽新的通知來實作無縫交換器,而不會中斷播放或擷取會話。 如需詳細資訊,請參閱 串流路由

如果您打算使用 Windows Vista 來測試應用程式,您可以設定測試環境,以確認應用程式在使用者可以將個別裝置角色指派給不同的裝置時,是否如預期般運作。 如需詳細資訊,請將電子郵件傳送至 uaa@microsoft.com。

通訊裝置

Windows 7 使用者介面具有新增 通訊裝置的功能。 聲音控制面板可讓用戶選取預設通訊裝置,以便轉譯和擷取音訊串流。 根據預設,當新的裝置連線到計算機時,操作系統會執行自動角色偵測,並判斷裝置是否適合 eCommunication 角色。 藉由以通訊裝置為目標,您可以開發使用核心音訊 API 來實作電腦手機通訊解決方案的應用程式。 例如,VoIP 應用程式可能會將其語音輸入和輸出串流指派給具有 eCommunications 角色的預設擷取和轉譯端點裝置。 如同任何其他數據流,通訊應用程式必須藉由呼叫 IMMDeviceEnumerator::GetDefaultAudioEndpoint 來取得通訊裝置端點的參考。 在此呼叫中,應用程式必須在 Role 參數中指定 eCommunications。 在通訊裝置上開啟的數據流上的WASAPI串流作業類似於任何其他音訊數據流。 通訊應用程式可以藉由實作像是透過處理裝置端點通知之類的行為來增強用戶體驗。 如需詳細資訊,請參閱 使用通訊裝置

自動裝置角色偵測

請考慮電腦具有預設轉譯裝置、喇叭和預設擷取裝置麥克風的情況。 使用者會將 USB 頭戴式裝置連線到電腦。 安裝適當的驅動程序之後,操作系統會嘗試偵測要指派給新音訊裝置的角色。

在 Windows 7 中,裝置角色偵測功能已大幅改善,以判斷適合音訊裝置的適當角色。 所有音訊裝置都包含一組由裝置 OEM 填入的組態設定,可協助系統決定如何使用裝置。 這些設定包括裝置類型、插孔子類型和偵測功能等音訊插孔的實體位置等資訊,讓系統可以判斷裝置是否插入。 藉由從裝置擷取這些值,操作系統會決定指派給裝置的角色。 在此案例中,系統已查詢USB頭戴裝置、執行自動角色偵測,並決定該裝置最適合為通訊裝置。

應用程式也可以使用核心音訊 API 來取得插孔資訊。 如需詳細資訊,請參閱 IKsJackDescriptionIKsJackDescription2

裝置角色