1# native_audio_session_manager.h 2 3## Overview 4 5The file declares the functions related to an audio session manager. 6 7You can call the functions to create an audio session manager, activate or deactivate an audio session, check whether an audio session is activated, and listen for audio session deactivation events. 8 9**Library**: libohaudio.so 10 11**File to include**: <ohaudio/native_audio_session_manager.h> 12 13**System capability**: SystemCapability.Multimedia.Audio.Core 14 15**Since**: 12 16 17**Related module**: [OHAudio](capi-ohaudio.md) 18 19## Summary 20 21### Structs 22 23| Name| typedef Keyword| Description| 24| -- | -- | -- | 25| [OH_AudioSession_Strategy](capi-ohaudio-oh-audiosession-strategy.md) | OH_AudioSession_Strategy | Describes the audio session strategy.| 26| [OH_AudioSession_DeactivatedEvent](capi-ohaudio-oh-audiosession-deactivatedevent.md) | OH_AudioSession_DeactivatedEvent | Describes the event indicating that an audio session is deactivated.| 27| [OH_AudioSessionManager](capi-ohaudio-oh-audiosessionmanager.md) | OH_AudioSessionManager | Describes an audio session manager, which is used to manage audio sessions. | 28 29### Enums 30 31| Name| typedef Keyword| Description| 32| -- | -- | -- | 33| [OH_AudioSession_ConcurrencyMode](#oh_audiosession_concurrencymode) | OH_AudioSession_ConcurrencyMode | Enumerates the audio concurrency modes.| 34| [OH_AudioSession_DeactivatedReason](#oh_audiosession_deactivatedreason) | OH_AudioSession_DeactivatedReason | Enumerates the reasons for deactivating an audio session.| 35 36### Functions 37 38| Name| typedef Keyword| Description| 39| -- | -- | -- | 40| [typedef int32_t (\*OH_AudioSession_DeactivatedCallback)(OH_AudioSession_DeactivatedEvent event)](#oh_audiosession_deactivatedcallback) | OH_AudioSession_DeactivatedCallback | Defines a function pointer to the callback used to listen for audio session deactivation events.| 41| [OH_AudioCommon_Result OH_AudioManager_GetAudioSessionManager(OH_AudioSessionManager **audioSessionManager)](#oh_audiomanager_getaudiosessionmanager) | - | Obtains an OH_AudioSessionManager instance. Before using the features related to the audio session manager, you must obtain an OH_AudioSessionManager instance.| 42| [OH_AudioCommon_Result OH_AudioSessionManager_ActivateAudioSession(OH_AudioSessionManager *audioSessionManager, const OH_AudioSession_Strategy *strategy)](#oh_audiosessionmanager_activateaudiosession) | - | Activates an audio session.| 43| [OH_AudioCommon_Result OH_AudioSessionManager_DeactivateAudioSession(OH_AudioSessionManager *audioSessionManager)](#oh_audiosessionmanager_deactivateaudiosession) | - | Deactivates an audio session.| 44| [bool OH_AudioSessionManager_IsAudioSessionActivated(OH_AudioSessionManager *audioSessionManager)](#oh_audiosessionmanager_isaudiosessionactivated) | - | Checks whether an audio session is activated.| 45| [OH_AudioCommon_Result OH_AudioSessionManager_RegisterSessionDeactivatedCallback(OH_AudioSessionManager *audioSessionManager, OH_AudioSession_DeactivatedCallback callback)](#oh_audiosessionmanager_registersessiondeactivatedcallback) | - | Registers a callback to listen for audio session deactivation events.| 46| [OH_AudioCommon_Result OH_AudioSessionManager_UnregisterSessionDeactivatedCallback(OH_AudioSessionManager *audioSessionManager, OH_AudioSession_DeactivatedCallback callback)](#oh_audiosessionmanager_unregistersessiondeactivatedcallback) | - | Unregisters the callback used to listen for audio session deactivation events.| 47 48## Enum Description 49 50### OH_AudioSession_ConcurrencyMode 51 52``` 53enum OH_AudioSession_ConcurrencyMode 54``` 55 56**Description** 57 58Enumerates the audio concurrency modes. 59 60**Since**: 12 61 62| Enum Item| Description| 63| -- | -- | 64| CONCURRENCY_DEFAULT = 0 | Uses the system strategy by default.| 65| CONCURRENCY_MIX_WITH_OTHERS = 1 | Mixes audio with other applications that are playing audio.| 66| CONCURRENCY_DUCK_OTHERS = 2 | Lowers the volume of the application that is currently playing the audio.| 67| CONCURRENCY_PAUSE_OTHERS = 3 | Pauses the application that is currently playing the audio.| 68 69### OH_AudioSession_DeactivatedReason 70 71``` 72enum OH_AudioSession_DeactivatedReason 73``` 74 75**Description** 76 77Enumerates the reasons for deactivating an audio session. 78 79**Since**: 12 80 81| Enum Item| Description| 82| -- | -- | 83| DEACTIVATED_LOWER_PRIORITY = 0 | The application focus is preempted.| 84| DEACTIVATED_TIMEOUT = 1 | The application times out after the stream is stopped.| 85 86 87## Function Description 88 89### OH_AudioSession_DeactivatedCallback() 90 91``` 92typedef int32_t (*OH_AudioSession_DeactivatedCallback)(OH_AudioSession_DeactivatedEvent event) 93``` 94 95**Description** 96 97Defines a function pointer to the callback used to listen for audio session deactivation events. 98 99**Since**: 12 100 101**Parameters** 102 103| Name| Description| 104| -- | -- | 105| [OH_AudioSession_DeactivatedEvent](capi-ohaudio-oh-audiosession-deactivatedevent.md) event | Pointer to OH_AudioSession_Deactivated_Event, which indicates that an audio session is deactivated.| 106 107### OH_AudioManager_GetAudioSessionManager() 108 109``` 110OH_AudioCommon_Result OH_AudioManager_GetAudioSessionManager(OH_AudioSessionManager **audioSessionManager) 111``` 112 113**Description** 114 115Obtains an OH_AudioSessionManager instance. 116 117Before using the features related to the audio session manager, you must obtain an OH_AudioSessionManager instance. 118 119**Since**: 12 120 121**Parameters** 122 123| Name| Description| 124| -- | -- | 125| [OH_AudioSessionManager](capi-ohaudio-oh-audiosessionmanager.md) **audioSessionManager | Double pointer to the OH_AudioSessionManager instance obtained.| 126 127**Returns** 128 129| Type| Description| 130| -- | -- | 131| [OH_AudioCommon_Result](capi-native-audio-common-h.md#oh_audiocommon_result) | **AUDIOCOMMON_RESULT_SUCCESS**: The function is executed successfully.<br>**AUDIOCOMMON_RESULT_ERROR_SYSTEM**: System error. | 132 133### OH_AudioSessionManager_ActivateAudioSession() 134 135``` 136OH_AudioCommon_Result OH_AudioSessionManager_ActivateAudioSession(OH_AudioSessionManager *audioSessionManager, const OH_AudioSession_Strategy *strategy) 137``` 138 139**Description** 140 141Activates an audio session. 142 143**Since**: 12 144 145 146**Parameters** 147 148| Name| Description| 149| -- | -- | 150| [OH_AudioSessionManager](capi-ohaudio-oh-audiosessionmanager.md) *audioSessionManager | Pointer to an audio session manager instance, which is created by calling [OH_AudioManager_GetAudioSessionManager](#oh_audiomanager_getaudiosessionmanager).| 151| const [OH_AudioSession_Strategy](capi-ohaudio-oh-audiosession-strategy.md) *strategy | Pointer to an audio session strategy, which is an [OH_AudioSession_Strategy](capi-ohaudio-oh-audiosession-strategy.md) struct. | 152 153**Returns** 154 155| Type| Description| 156| -- | -- | 157| [OH_AudioCommon_Result](capi-native-audio-common-h.md#oh_audiocommon_result) | **AUDIOCOMMON_RESULT_SUCCESS**: The function is executed successfully.<br>**AUDIOCOMMON_RESULT_ERROR_INVALID_PARAM**:<br>1. The **audioSessionManager** parameter is nullptr.<br>2. The **strategy** parameter is invalid.<br>**AUDIOCOMMON_RESULT_ERROR_ILLEGAL_STATE**: Invalid state. | 158 159### OH_AudioSessionManager_DeactivateAudioSession() 160 161``` 162OH_AudioCommon_Result OH_AudioSessionManager_DeactivateAudioSession(OH_AudioSessionManager *audioSessionManager) 163``` 164 165**Description** 166 167Deactivates an audio session. 168 169**Since**: 12 170 171 172**Parameters** 173 174| Name| Description| 175| -- | -- | 176| [OH_AudioSessionManager](capi-ohaudio-oh-audiosessionmanager.md) *audioSessionManager | Pointer to an audio session manager instance, which is created by calling [OH_AudioManager_GetAudioSessionManager](#oh_audiomanager_getaudiosessionmanager).| 177 178**Returns** 179 180| Type| Description| 181| -- | -- | 182| [OH_AudioCommon_Result](capi-native-audio-common-h.md#oh_audiocommon_result) | **AUDIOCOMMON_RESULT_SUCCESS**: The function is executed successfully.<br>**AUDIOCOMMON_RESULT_ERROR_INVALID_PARAM**: The **audioSessionManager** parameter is nullptr.<br>**AUDIOCOMMON_RESULT_ERROR_ILLEGAL_STATE**: Invalid state. | 183 184### OH_AudioSessionManager_IsAudioSessionActivated() 185 186``` 187bool OH_AudioSessionManager_IsAudioSessionActivated(OH_AudioSessionManager *audioSessionManager) 188``` 189 190**Description** 191 192Checks whether an audio session is activated. 193 194**Since**: 12 195 196 197**Parameters** 198 199| Name| Description| 200| -- | -- | 201| [OH_AudioSessionManager](capi-ohaudio-oh-audiosessionmanager.md) *audioSessionManager | Pointer to an audio session manager instance, which is created by calling [OH_AudioManager_GetAudioSessionManager](#oh_audiomanager_getaudiosessionmanager).| 202 203**Returns** 204 205| Type| Description| 206| -- | -- | 207| bool | Check result. The value **true** is returned if the audio session is activated, and **false** is returned otherwise.| 208 209### OH_AudioSessionManager_RegisterSessionDeactivatedCallback() 210 211``` 212OH_AudioCommon_Result OH_AudioSessionManager_RegisterSessionDeactivatedCallback(OH_AudioSessionManager *audioSessionManager, OH_AudioSession_DeactivatedCallback callback) 213``` 214 215**Description** 216 217Registers a callback to listen for audio session deactivation events. 218 219**Since**: 12 220 221**Parameters** 222 223| Name| Description| 224| -- | -- | 225| [OH_AudioSessionManager](capi-ohaudio-oh-audiosessionmanager.md) *audioSessionManager | Pointer to an audio session manager instance, which is created by calling [OH_AudioManager_GetAudioSessionManager](#oh_audiomanager_getaudiosessionmanager).| 226| [OH_AudioSession_DeactivatedCallback](#oh_audiosession_deactivatedcallback) callback | OH_AudioSessionDeactivatedCallback, a callback used to receive the audio session deactivation event.| 227 228**Returns** 229 230| Type| Description| 231| -- | -- | 232| [OH_AudioCommon_Result](capi-native-audio-common-h.md#oh_audiocommon_result) | **AUDIOCOMMON_RESULT_SUCCESS**: The function is executed successfully.<br>**AUDIOCOMMON_RESULT_ERROR_INVALID_PARAM**:<br>1. The **audioSessionManager** parameter is nullptr.<br>2. The **callback** parameter is nullptr. | 233 234### OH_AudioSessionManager_UnregisterSessionDeactivatedCallback() 235 236``` 237OH_AudioCommon_Result OH_AudioSessionManager_UnregisterSessionDeactivatedCallback(OH_AudioSessionManager *audioSessionManager, OH_AudioSession_DeactivatedCallback callback) 238``` 239 240**Description** 241 242Unregisters the callback used to listen for audio session deactivation events. 243 244**Since**: 12 245 246 247**Parameters** 248 249| Name| Description| 250| -- | -- | 251| [OH_AudioSessionManager](capi-ohaudio-oh-audiosessionmanager.md) *audioSessionManager | Pointer to an audio session manager instance, which is created by calling [OH_AudioManager_GetAudioSessionManager](#oh_audiomanager_getaudiosessionmanager).| 252| [OH_AudioSession_DeactivatedCallback](#oh_audiosession_deactivatedcallback) callback | OH_AudioSessionDeactivatedCallback, a callback used to receive the audio session deactivation event.| 253 254**Returns** 255 256| Type| Description| 257| -- | -- | 258| [OH_AudioCommon_Result](capi-native-audio-common-h.md#oh_audiocommon_result) | **AUDIOCOMMON_RESULT_SUCCESS**: The function is executed successfully.<br>**AUDIOCOMMON_RESULT_ERROR_INVALID_PARAM**:<br>1. The **audioSessionManager** parameter is nullptr.<br>2. The **callback** parameter is nullptr. | 259