Antarmuka IAudioSessionControl2 (audiopolicy.h)
Antarmuka IAudioSessionControl2 dapat digunakan oleh klien untuk mendapatkan informasi tentang sesi audio.
Untuk mendapatkan referensi ke antarmuka IAudioSessionControl2 , aplikasi harus memanggil IAudioSessionControl::QueryInterface untuk meminta penunjuk antarmuka dari antarmuka IAudioSessionControl objek aliran. Ada dua cara aplikasi bisa mendapatkan penunjuk ke antarmuka IAudioSessionControl :
- Dengan memanggil IAudioClient::GetService pada klien audio setelah membuka streaming di perangkat. Klien audio membuka aliran untuk penyajian atau pengambilan, dan mengaitkannya dengan sesi audio dengan memanggil IAudioClient::Initialize.
- Dengan memanggil IAudioSessionManager::GetAudioSessionControl untuk sesi audio yang ada tanpa membuka aliran.
Utas aplikasi yang menggunakan antarmuka ini harus diinisialisasi untuk COM. Untuk informasi selengkapnya tentang inisialisasi COM, lihat deskripsi fungsi CoInitializeEx dalam dokumentasi Windows SDK.
Warisan
Antarmuka IAudioSessionControl2 mewarisi dari IAudioSessionControl. IAudioSessionControl2 juga memiliki jenis anggota ini:
Metode
Antarmuka IAudioSessionControl2 memiliki metode ini.
IAudioSessionControl2::GetProcessId Metode GetProcessId mengambil pengidentifikasi proses sesi audio. |
IAudioSessionControl2::GetSessionIdentifier Metode GetSessionIdentifier mengambil pengidentifikasi sesi audio. |
IAudioSessionControl2::GetSessionInstanceIdentifier Metode GetSessionInstanceIdentifier mengambil pengidentifikasi instans sesi audio. |
IAudioSessionControl2::IsSystemSoundsSession Metode IsSystemSoundsSession menunjukkan apakah sesi tersebut merupakan sesi suara sistem. |
IAudioSessionControl2::SetDuckingPreference Metode SetDuckingPreference memungkinkan atau menonaktifkan pengalaman pelemahan aliran default (auto-ducking) yang disediakan oleh sistem. |
Keterangan
Antarmuka ini mendukung implementasi kustom untuk redaman aliran atau bebek, fitur baru di Windows 7. Aplikasi yang memutar aliran media dapat membuatnya bersifat berbeda ketika aliran komunikasi baru dibuka pada perangkat komunikasi default. Misalnya, aliran media asli dapat dijeda saat aliran komunikasi baru terbuka. Untuk informasi selengkapnya tentang fitur ini, lihat Pengalaman Ducking Default.
Aplikasi dapat menggunakan antarmuka ini untuk melakukan tugas-tugas berikut:
- Tentukan bahwa ia ingin menolak pengalaman redaman aliran default yang disediakan oleh sistem.
- Dapatkan pengidentifikasi sesi audio yang terkait dengan aliran. Pengidentifikasi diperlukan selama pendaftaran pemberitahuan. Aplikasi dapat mendaftarkan dirinya untuk menerima pemberitahuan bebek dari sistem.
- Periksa apakah aliran yang terkait dengan sesi audio adalah suara sistem.
Contoh
Contoh kode berikut menunjukkan cara mendapatkan referensi ke antarmuka IAudioSessionControl2 dan memanggil metodenya untuk menentukan apakah aliran yang terkait dengan sesi audio adalah suara sistem.
HRESULT SetDuckingForSystemSounds()
{
HRESULT hr = S_OK;
IMMDevice* pDevice = NULL;
IMMDeviceEnumerator* pEnumerator = NULL;
IAudioSessionControl* pSessionControl = NULL;
IAudioSessionControl2* pSessionControl2 = NULL;
IAudioSessionManager* pSessionManager = NULL;
CHECK_HR( hr = CoInitialize(NULL));
// Create the device enumerator.
CHECK_HR( hr = CoCreateInstance(
__uuidof(MMDeviceEnumerator),
NULL, CLSCTX_ALL,
__uuidof(IMMDeviceEnumerator),
(void**)&pEnumerator));
// Get the default audio device.
CHECK_HR( hr = pEnumerator->GetDefaultAudioEndpoint(
eRender, eConsole, &pDevice));
// Get the audio client.
CHECK_HR( hr = pDevice->Activate(
__uuidof(IID_IAudioSessionManager), CLSCTX_ALL,
NULL, (void**)&pSessionManager));
// Get a reference to the session manager.
CHECK_HR( hr = pSessionManager->GetAudioSessionControl (GUID_NULL, FALSE, &pSessionControl));
// Get the extended session control interface pointer.
CHECK_HR( hr = pSessionControl->QueryInterface(
__uuidof(IAudioSessionControl2), (void**) &pSessionControl2));
// Check whether this is a system sound.
CHECK_HR( hr = pSessionControl2->IsSystemSoundsSession());
// If it is a system sound, opt out of the default
// stream attenuation experience.
CHECK_HR( hr = pSessionControl2->SetDuckingPreference(TRUE));
done:
// Clean up.
SAFE_RELEASE(pSessionControl2);
SAFE_RELEASE(pSessionControl);
SAFE_RELEASE(pEnumerator);
SAFE_RELEASE(pDevice);
return hr;
}
Persyaratan
Persyaratan | Nilai |
---|---|
Klien minimum yang didukung | Windows 7 [hanya aplikasi desktop] |
Server minimum yang didukung | Windows Server 2008 R2 [hanya aplikasi desktop] |
Target Platform | Windows |
Header | audiopolicy.h |