1# native_audio_session_manager.h 2<!--Kit: Audio Kit--> 3<!--Subsystem: Multimedia--> 4<!--Owner: @songshenke--> 5<!--Designer: @caixuejiang; @hao-liangfei; @zhanganxiang--> 6<!--Tester: @Filger--> 7<!--Adviser: @zengyawen--> 8 9## 概述 10 11声明音频会话管理相关的接口。<br> 包含创建音频会话管理器、激活/停用音频会话、检查音频会话是否已激活,以及监听音频会话停用事件。 12 13**引用文件:** <ohaudio/native_audio_session_manager.h> 14 15**库:** libohaudio.so 16 17**系统能力:** SystemCapability.Multimedia.Audio.Core 18 19**起始版本:** 12 20 21**相关模块:** [OHAudio](capi-ohaudio.md) 22 23## 汇总 24 25### 结构体 26 27| 名称 | typedef关键字 | 描述 | 28| -- | -- | -- | 29| [OH_AudioSession_Strategy](capi-ohaudio-oh-audiosession-strategy.md) | OH_AudioSession_Strategy | 音频会话策略。 | 30| [OH_AudioSession_DeactivatedEvent](capi-ohaudio-oh-audiosession-deactivatedevent.md) | OH_AudioSession_DeactivatedEvent | 音频会话已停用事件。 | 31| [OH_AudioSession_StateChangedEvent](capi-ohaudio-oh-audiosession-statechangedevent.md) | OH_AudioSession_StateChangedEvent | 音频会话状态变更事件。 | 32| [OH_AudioSessionManager](capi-ohaudio-oh-audiosessionmanager.md) | OH_AudioSessionManager | 声明音频会话管理器。<br> 用于管理音频会话相关功能。 | 33 34### 枚举 35 36| 名称 | typedef关键字 | 描述 | 37| -- | -- | -- | 38| [OH_AudioSession_ConcurrencyMode](#oh_audiosession_concurrencymode) | OH_AudioSession_ConcurrencyMode | 音频并发模式。 | 39| [OH_AudioSession_Scene](#oh_audiosession_scene) | OH_AudioSession_Scene | 音频会话场景。 | 40| [OH_AudioSession_StateChangeHint](#oh_audiosession_statechangehint) | OH_AudioSession_StateChangeHint | 音频会话状态变更的提示信息。 | 41| [OH_AudioSession_OutputDeviceChangeRecommendedAction](#oh_audiosession_outputdevicechangerecommendedaction) | OH_AudioSession_OutputDeviceChangeRecommendedAction | 输出设备变更后推荐的操作。 | 42| [OH_AudioSession_DeactivatedReason](#oh_audiosession_deactivatedreason) | OH_AudioSession_DeactivatedReason | 音频会话停用原因。 | 43 44### 函数 45 46| 名称 | typedef关键字 | 描述 | 47| -- | -- | -- | 48| [typedef void (\*OH_AudioSession_StateChangedCallback)(OH_AudioSession_StateChangedEvent event)](#oh_audiosession_statechangedcallback) | OH_AudioSession_StateChangedCallback | 这个函数指针将指向用于监听音频会话状态变更事件的回调函数。 | 49| [typedef void (\*OH_AudioSession_CurrentOutputDeviceChangedCallback)(OH_AudioDeviceDescriptorArray *devices, OH_AudioStream_DeviceChangeReason changeReason, OH_AudioSession_OutputDeviceChangeRecommendedAction recommendedAction)](#oh_audiosession_currentoutputdevicechangedcallback) | OH_AudioSession_CurrentOutputDeviceChangedCallback | 这个函数指针将指向用于监听当前输出设备变化事件的回调函数。 | 50| [typedef int32_t (\*OH_AudioSession_DeactivatedCallback)(OH_AudioSession_DeactivatedEvent event)](#oh_audiosession_deactivatedcallback) | OH_AudioSession_DeactivatedCallback | 这个函数指针将指向用于监听音频会话停用事件的回调函数。 | 51| [OH_AudioCommon_Result OH_AudioManager_GetAudioSessionManager(OH_AudioSessionManager **audioSessionManager)](#oh_audiomanager_getaudiosessionmanager) | - | 获取音频会话管理器。使用音频会话管理器相关功能,首先需要获取音频会话管理器实例。 | 52| [OH_AudioCommon_Result OH_AudioSessionManager_ActivateAudioSession(OH_AudioSessionManager *audioSessionManager, const OH_AudioSession_Strategy *strategy)](#oh_audiosessionmanager_activateaudiosession) | - | 激活音频会话。 | 53| [OH_AudioCommon_Result OH_AudioSessionManager_DeactivateAudioSession(OH_AudioSessionManager *audioSessionManager)](#oh_audiosessionmanager_deactivateaudiosession) | - | 停用音频会话。 | 54| [bool OH_AudioSessionManager_IsAudioSessionActivated(OH_AudioSessionManager *audioSessionManager)](#oh_audiosessionmanager_isaudiosessionactivated) | - | 检查音频会话是否已激活。 | 55| [OH_AudioCommon_Result OH_AudioSessionManager_RegisterSessionDeactivatedCallback(OH_AudioSessionManager *audioSessionManager, OH_AudioSession_DeactivatedCallback callback)](#oh_audiosessionmanager_registersessiondeactivatedcallback) | - | 注册音频会话停用事件回调。 | 56| [OH_AudioCommon_Result OH_AudioSessionManager_UnregisterSessionDeactivatedCallback(OH_AudioSessionManager *audioSessionManager, OH_AudioSession_DeactivatedCallback callback)](#oh_audiosessionmanager_unregistersessiondeactivatedcallback) | - | 取消注册音频会话停用事件回调。 | 57| [OH_AudioCommon_Result OH_AudioSessionManager_SetScene(OH_AudioSessionManager *audioSessionManager, OH_AudioSession_Scene scene)](#oh_audiosessionmanager_setscene) | - | 设置音频会话场景参数。 | 58| [OH_AudioCommon_Result OH_AudioSessionManager_RegisterStateChangeCallback(OH_AudioSessionManager *audioSessionManager, OH_AudioSession_StateChangedCallback callback)](#oh_audiosessionmanager_registerstatechangecallback) | - | 注册音频会话状态变更事件回调。 | 59| [OH_AudioCommon_Result OH_AudioSessionManager_UnregisterStateChangeCallback(OH_AudioSessionManager *audioSessionManager, OH_AudioSession_StateChangedCallback callback)](#oh_audiosessionmanager_unregisterstatechangecallback) | - | 取消音频会话状态变更事件回调。 | 60| [OH_AudioCommon_Result OH_AudioSessionManager_SetDefaultOutputDevice(OH_AudioSessionManager *audioSessionManager, OH_AudioDevice_Type deviceType)](#oh_audiosessionmanager_setdefaultoutputdevice) | - | 设置默认本机内置发声设备。 | 61| [OH_AudioCommon_Result OH_AudioSessionManager_GetDefaultOutputDevice(OH_AudioSessionManager *audioSessionManager, OH_AudioDevice_Type *deviceType)](#oh_audiosessionmanager_getdefaultoutputdevice) | - | 获取通过[OH_AudioSessionManager_SetDefaultOutputDevice](#oh_audiosessionmanager_setdefaultoutputdevice)设置的默认发声设备。 | 62| [OH_AudioCommon_Result OH_AudioSessionManager_ReleaseDevices(OH_AudioSessionManager *audioSessionManager, OH_AudioDeviceDescriptorArray *audioDeviceDescriptorArray)](#oh_audiosessionmanager_releasedevices) | - | 释放音频设备描述符数组对象。 | 63| [OH_AudioCommon_Result OH_AudioSessionManager_RegisterCurrentOutputDeviceChangeCallback(OH_AudioSessionManager *audioSessionManager, OH_AudioSession_CurrentOutputDeviceChangedCallback callback)](#oh_audiosessionmanager_registercurrentoutputdevicechangecallback) | - | 注册当前输出设备变化回调。 | 64| [OH_AudioCommon_Result OH_AudioSessionManager_UnregisterCurrentOutputDeviceChangeCallback(OH_AudioSessionManager *audioSessionManager, OH_AudioSession_CurrentOutputDeviceChangedCallback callback)](#oh_audiosessionmanager_unregistercurrentoutputdevicechangecallback) | - | 取消注册当前输出设备变化回调。 | 65 66## 枚举类型说明 67 68### OH_AudioSession_ConcurrencyMode 69 70``` 71enum OH_AudioSession_ConcurrencyMode 72``` 73 74**描述** 75 76音频并发模式。 77 78**起始版本:** 12 79 80| 枚举项 | 描述 | 81| -- | -- | 82| CONCURRENCY_DEFAULT = 0 | 默认使用系统策略。 | 83| CONCURRENCY_MIX_WITH_OTHERS = 1 | 和其它正在播放应用进行混音。 | 84| CONCURRENCY_DUCK_OTHERS = 2 | 后来播放应用压低正在播放应用的音量。 | 85| CONCURRENCY_PAUSE_OTHERS = 3 | 后来播放应用暂停正在播放应用。 | 86 87### OH_AudioSession_Scene 88 89``` 90enum OH_AudioSession_Scene 91``` 92 93**描述** 94 95音频会话场景。 96 97**起始版本:** 20 98 99| 枚举项 | 描述 | 100| -- | -- | 101| AUDIO_SESSION_SCENE_MEDIA = 0 | 媒体音频会话场景。 | 102| AUDIO_SESSION_SCENE_GAME = 1 | 游戏音频会话场景。 | 103| AUDIO_SESSION_SCENE_VOICE_COMMUNICATION = 2 | VoIP语音通话音频会话场景。 | 104 105### OH_AudioSession_StateChangeHint 106 107``` 108enum OH_AudioSession_StateChangeHint 109``` 110 111**描述** 112 113音频会话状态变更的提示信息。 114 115**起始版本:** 20 116 117| 枚举项 | 描述 | 118| -- | -- | 119| AUDIO_SESSION_STATE_CHANGE_HINT_RESUME = 0 | 提示音频会话恢复,应用可主动触发开始渲染等相关操作。 | 120| AUDIO_SESSION_STATE_CHANGE_HINT_PAUSE = 1 | 提示音频会话暂停,暂时失去音频焦点。当焦点再次可用时,会收到AUDIO_SESSION_STATE_CHANGE_HINT_RESUME事件。 | 121| AUDIO_SESSION_STATE_CHANGE_HINT_STOP = 2 | 提示音频会话在焦点被抢占后停止,彻底失去音频焦点。 | 122| AUDIO_SESSION_STATE_CHANGE_HINT_TIME_OUT_STOP = 3 | 提示长时间没有音频业务,音频会话将被系统停止,彻底失去音频焦点。 | 123| AUDIO_SESSION_STATE_CHANGE_HINT_DUCK = 4 | 提示音频会话躲避开始,降低音量播放。 | 124| AUDIO_SESSION_STATE_CHANGE_HINT_UNDUCK = 5 | 提示音频会话躲避结束,恢复音量播放。 | 125 126### OH_AudioSession_OutputDeviceChangeRecommendedAction 127 128``` 129enum OH_AudioSession_OutputDeviceChangeRecommendedAction 130``` 131 132**描述** 133 134输出设备变更后推荐的操作。 135 136**起始版本:** 20 137 138| 枚举项 | 描述 | 139| -- | -- | 140| DEVICE_CHANGE_RECOMMEND_TO_CONTINUE = 0 | 推荐继续播放。 | 141| DEVICE_CHANGE_RECOMMEND_TO_STOP = 1 | 推荐停止播放。 | 142 143### OH_AudioSession_DeactivatedReason 144 145``` 146enum OH_AudioSession_DeactivatedReason 147``` 148 149**描述** 150 151音频会话停用原因。 152 153**起始版本:** 12 154 155| 枚举项 | 描述 | 156| -- | -- | 157| DEACTIVATED_LOWER_PRIORITY = 0 | 应用焦点被抢占。 | 158| DEACTIVATED_TIMEOUT = 1 | 应用停流后超时。 | 159 160 161## 函数说明 162 163### OH_AudioSession_StateChangedCallback() 164 165``` 166typedef void (*OH_AudioSession_StateChangedCallback)(OH_AudioSession_StateChangedEvent event) 167``` 168 169**描述** 170 171这个函数指针将指向用于监听音频会话状态变更事件的回调函数。 172 173**起始版本:** 20 174 175 176**参数:** 177 178| 参数项 | 描述 | 179| -- | -- | 180| [OH_AudioSession_StateChangedEvent](capi-ohaudio-oh-audiosession-statechangedevent.md) event | 指向[OH_AudioSession_StateChangedEvent](capi-ohaudio-oh-audiosession-statechangedevent.md)音频会话状态变更事件。 | 181 182### OH_AudioSession_CurrentOutputDeviceChangedCallback() 183 184``` 185typedef void (*OH_AudioSession_CurrentOutputDeviceChangedCallback)(OH_AudioDeviceDescriptorArray *devices, OH_AudioStream_DeviceChangeReason changeReason, OH_AudioSession_OutputDeviceChangeRecommendedAction recommendedAction) 186``` 187 188**描述** 189 190这个函数指针将指向用于监听当前输出设备变化事件的回调函数。 191 192**起始版本:** 20 193 194 195**参数:** 196 197| 参数项 | 描述 | 198| -- | -- | 199| [OH_AudioDeviceDescriptorArray](capi-ohaudio-oh-audiodevicedescriptorarray.md) *devices | 音频设备描述符数组,指向[OH_AudioDeviceDescriptorArray](capi-ohaudio-oh-audiodevicedescriptorarray.md)设置音频设备描述符值的指针变量,不要单独释放audioDeviceDescriptorArray指针,而是调用[OH_AudioSessionManager_ReleaseDevices](#oh_audiosessionmanager_releasedevices)来释放DeviceDescriptor数组。 | 200| [OH_AudioStream_DeviceChangeReason](capi-native-audiostream-base-h.md#oh_audiostream_devicechangereason) changeReason | 指向[OH_AudioStream_DeviceChangeReason](capi-native-audiostream-base-h.md#oh_audiostream_devicechangereason),用于接收设备变更原因。 | 201| [OH_AudioSession_OutputDeviceChangeRecommendedAction](#oh_audiosession_outputdevicechangerecommendedaction) recommendedAction | 指向[OH_AudioSession_OutputDeviceChangeRecommendedAction](#oh_audiosession_outputdevicechangerecommendedaction),用于接收设备变更后推荐的操作。 | 202 203### OH_AudioSession_DeactivatedCallback() 204 205``` 206typedef int32_t (*OH_AudioSession_DeactivatedCallback)(OH_AudioSession_DeactivatedEvent event) 207``` 208 209**描述** 210 211这个函数指针将指向用于监听音频会话停用事件的回调函数。 212 213**起始版本:** 12 214 215 216**参数:** 217 218| 参数项 | 描述 | 219| -- | -- | 220| [OH_AudioSession_DeactivatedEvent](capi-ohaudio-oh-audiosession-deactivatedevent.md) event | 指向OH_AudioSession_Deactivated_Event音频会话已停用事件。 | 221 222### OH_AudioManager_GetAudioSessionManager() 223 224``` 225OH_AudioCommon_Result OH_AudioManager_GetAudioSessionManager(OH_AudioSessionManager **audioSessionManager) 226``` 227 228**描述** 229 230获取音频会话管理器。使用音频会话管理器相关功能,首先需要获取音频会话管理器实例。 231 232**起始版本:** 12 233 234 235**参数:** 236 237| 参数项 | 描述 | 238| -- | -- | 239| [OH_AudioSessionManager](capi-ohaudio-oh-audiosessionmanager.md) **audioSessionManager | 指向OH_AudioSessionManager音频会话管理器实例。 | 240 241**返回:** 242 243| 类型 | 说明 | 244| -- | -- | 245| [OH_AudioCommon_Result](capi-native-audio-common-h.md#oh_audiocommon_result) | AUDIOCOMMON_RESULT_SUCCESS:函数执行成功。<br> AUDIOCOMMON_RESULT_ERROR_SYSTEM:系统错误。 | 246 247### OH_AudioSessionManager_ActivateAudioSession() 248 249``` 250OH_AudioCommon_Result OH_AudioSessionManager_ActivateAudioSession(OH_AudioSessionManager *audioSessionManager, const OH_AudioSession_Strategy *strategy) 251``` 252 253**描述** 254 255激活音频会话。 256 257**起始版本:** 12 258 259 260**参数:** 261 262| 参数项 | 描述 | 263| -- | -- | 264| [OH_AudioSessionManager](capi-ohaudio-oh-audiosessionmanager.md) *audioSessionManager | 指向[OH_AudioManager_GetAudioSessionManager](#oh_audiomanager_getaudiosessionmanager)创建的音频会话管理实例。 | 265| const [OH_AudioSession_Strategy](capi-ohaudio-oh-audiosession-strategy.md) *strategy | 指向[OH_AudioSession_Strategy](capi-ohaudio-oh-audiosession-strategy.md),用于设置音频会话策略。 | 266 267**返回:** 268 269| 类型 | 说明 | 270| -- | -- | 271| [OH_AudioCommon_Result](capi-native-audio-common-h.md#oh_audiocommon_result) | AUDIOCOMMON_RESULT_SUCCESS:函数执行成功。<br> AUDIOCOMMON_RESULT_ERROR_INVALID_PARAM:<br> 1. 参数audioSessionManager为nullptr;<br> 2. 参数strategy无效。<br> AUDIOCOMMON_RESULT_ERROR_ILLEGAL_STATE:非法状态。 | 272 273### OH_AudioSessionManager_DeactivateAudioSession() 274 275``` 276OH_AudioCommon_Result OH_AudioSessionManager_DeactivateAudioSession(OH_AudioSessionManager *audioSessionManager) 277``` 278 279**描述** 280 281停用音频会话。 282 283**起始版本:** 12 284 285 286**参数:** 287 288| 参数项 | 描述 | 289| -- | -- | 290| [OH_AudioSessionManager](capi-ohaudio-oh-audiosessionmanager.md) *audioSessionManager | 指向[OH_AudioManager_GetAudioSessionManager](#oh_audiomanager_getaudiosessionmanager)创建的音频会话管理实例。 | 291 292**返回:** 293 294| 类型 | 说明 | 295| -- | -- | 296| [OH_AudioCommon_Result](capi-native-audio-common-h.md#oh_audiocommon_result) | AUDIOCOMMON_RESULT_SUCCESS:函数执行成功。<br> AUDIOCOMMON_RESULT_ERROR_INVALID_PARAM:参数audioSessionManager为nullptr。<br> AUDIOCOMMON_RESULT_ERROR_ILLEGAL_STATE:非法状态。 | 297 298### OH_AudioSessionManager_IsAudioSessionActivated() 299 300``` 301bool OH_AudioSessionManager_IsAudioSessionActivated(OH_AudioSessionManager *audioSessionManager) 302``` 303 304**描述** 305 306检查音频会话是否已激活。 307 308**起始版本:** 12 309 310 311**参数:** 312 313| 参数项 | 描述 | 314| -- | -- | 315| [OH_AudioSessionManager](capi-ohaudio-oh-audiosessionmanager.md) *audioSessionManager | 指向[OH_AudioManager_GetAudioSessionManager](#oh_audiomanager_getaudiosessionmanager)创建的音频会话管理实例。 | 316 317**返回:** 318 319| 类型 | 说明 | 320| -- | -- | 321| bool | 用于返回当前应用的音频会话是否已激活,true表示已激活,false表示已停用。 | 322 323### OH_AudioSessionManager_RegisterSessionDeactivatedCallback() 324 325``` 326OH_AudioCommon_Result OH_AudioSessionManager_RegisterSessionDeactivatedCallback(OH_AudioSessionManager *audioSessionManager, OH_AudioSession_DeactivatedCallback callback) 327``` 328 329**描述** 330 331注册音频会话停用事件回调。 332 333**起始版本:** 12 334 335 336**参数:** 337 338| 参数项 | 描述 | 339| -- | -- | 340| [OH_AudioSessionManager](capi-ohaudio-oh-audiosessionmanager.md) *audioSessionManager | 指向[OH_AudioManager_GetAudioSessionManager](#oh_audiomanager_getaudiosessionmanager)创建的音频会话管理实例。 | 341| [OH_AudioSession_DeactivatedCallback](#oh_audiosession_deactivatedcallback) callback | 指向OH_AudioSessionDeactivatedCallback,用于接收音频会话已停用事件。 | 342 343**返回:** 344 345| 类型 | 说明 | 346| -- | -- | 347| [OH_AudioCommon_Result](capi-native-audio-common-h.md#oh_audiocommon_result) | AUDIOCOMMON_RESULT_SUCCESS:函数执行成功。<br> AUDIOCOMMON_RESULT_ERROR_INVALID_PARAM:<br> 1. 参数audioSessionManager为nullptr;<br> 2. 参数callback为nullptr。 | 348 349### OH_AudioSessionManager_UnregisterSessionDeactivatedCallback() 350 351``` 352OH_AudioCommon_Result OH_AudioSessionManager_UnregisterSessionDeactivatedCallback(OH_AudioSessionManager *audioSessionManager, OH_AudioSession_DeactivatedCallback callback) 353``` 354 355**描述** 356 357取消注册音频会话停用事件回调。 358 359**起始版本:** 12 360 361 362**参数:** 363 364| 参数项 | 描述 | 365| -- | -- | 366| [OH_AudioSessionManager](capi-ohaudio-oh-audiosessionmanager.md) *audioSessionManager | 指向[OH_AudioManager_GetAudioSessionManager](#oh_audiomanager_getaudiosessionmanager)创建的音频会话管理实例。 | 367| [OH_AudioSession_DeactivatedCallback](#oh_audiosession_deactivatedcallback) callback | 指向OH_AudioSessionDeactivatedCallback,用于接收音频会话已停用事件。 | 368 369**返回:** 370 371| 类型 | 说明 | 372| -- | -- | 373| [OH_AudioCommon_Result](capi-native-audio-common-h.md#oh_audiocommon_result) | AUDIOCOMMON_RESULT_SUCCESS:函数执行成功。<br> AUDIOCOMMON_RESULT_ERROR_INVALID_PARAM:<br> 1. 参数audioSessionManager为nullptr;<br> 2. 参数callback为nullptr。 | 374 375### OH_AudioSessionManager_SetScene() 376 377``` 378OH_AudioCommon_Result OH_AudioSessionManager_SetScene(OH_AudioSessionManager *audioSessionManager, OH_AudioSession_Scene scene) 379``` 380 381**描述** 382 383设置音频会话场景参数。 384 385**起始版本:** 20 386 387 388**参数:** 389 390| 参数项 | 描述 | 391| -- | -- | 392| [OH_AudioSessionManager](capi-ohaudio-oh-audiosessionmanager.md) *audioSessionManager | 指向[OH_AudioManager_GetAudioSessionManager](#oh_audiomanager_getaudiosessionmanager)创建的音频会话管理实例。 | 393| [OH_AudioSession_Scene](#oh_audiosession_scene) scene | 音频会话场景。 | 394 395**返回:** 396 397| 类型 | 说明 | 398| -- | -- | 399| [OH_AudioCommon_Result](capi-native-audio-common-h.md#oh_audiocommon_result) | AUDIOCOMMON_RESULT_SUCCESS:函数执行成功。<br> AUDIOCOMMON_RESULT_ERROR_INVALID_PARAM:<br> 1. 参数audioSessionManager为nullptr;<br> 2. 参数scene为枚举范围外的值。<br> AUDIOCOMMON_RESULT_ERROR_ILLEGAL_STATE:系统当前状态下不允许设置,例如audio session未处于ready态。<br> AUDIOCOMMON_RESULT_ERROR_SYSTEM:系统异常,例如系统服务异常退出等。 | 400 401### OH_AudioSessionManager_RegisterStateChangeCallback() 402 403``` 404OH_AudioCommon_Result OH_AudioSessionManager_RegisterStateChangeCallback(OH_AudioSessionManager *audioSessionManager, OH_AudioSession_StateChangedCallback callback) 405``` 406 407**描述** 408 409注册音频会话状态变更事件回调。 410 411**起始版本:** 20 412 413 414**参数:** 415 416| 参数项 | 描述 | 417| -- | -- | 418| [OH_AudioSessionManager](capi-ohaudio-oh-audiosessionmanager.md) *audioSessionManager | 指向[OH_AudioManager_GetAudioSessionManager](#oh_audiomanager_getaudiosessionmanager)创建的音频会话管理实例。 | 419| [OH_AudioSession_StateChangedCallback](#oh_audiosession_statechangedcallback) callback | 指向OH_AudioSession_StateChangedCallback,用于接收音频会话状态变更事件。 | 420 421**返回:** 422 423| 类型 | 说明 | 424| -- | -- | 425| [OH_AudioCommon_Result](capi-native-audio-common-h.md#oh_audiocommon_result) | AUDIOCOMMON_RESULT_SUCCESS:函数执行成功。<br> AUDIOCOMMON_RESULT_ERROR_INVALID_PARAM:<br> 1. 参数audioSessionManager为nullptr;<br> 2. 参数callback为nullptr。<br> AUDIOCOMMON_RESULT_ERROR_NO_MEMORY:系统内存申请异常。<br> AUDIOCOMMON_RESULT_ERROR_SYSTEM:系统异常,例如系统服务异常退出等。 | 426 427### OH_AudioSessionManager_UnregisterStateChangeCallback() 428 429``` 430OH_AudioCommon_Result OH_AudioSessionManager_UnregisterStateChangeCallback(OH_AudioSessionManager *audioSessionManager, OH_AudioSession_StateChangedCallback callback) 431``` 432 433**描述** 434 435取消音频会话状态变更事件回调。 436 437**起始版本:** 20 438 439 440**参数:** 441 442| 参数项 | 描述 | 443| -- | -- | 444| [OH_AudioSessionManager](capi-ohaudio-oh-audiosessionmanager.md) *audioSessionManager | 指向[OH_AudioManager_GetAudioSessionManager](#oh_audiomanager_getaudiosessionmanager)创建的音频会话管理实例。 | 445| [OH_AudioSession_StateChangedCallback](#oh_audiosession_statechangedcallback) callback | 指向OH_AudioSession_StateChangedCallback,用于接收音频会话状态变更事件。 | 446 447**返回:** 448 449| 类型 | 说明 | 450| -- | -- | 451| [OH_AudioCommon_Result](capi-native-audio-common-h.md#oh_audiocommon_result) | AUDIOCOMMON_RESULT_SUCCESS:函数执行成功。<br> AUDIOCOMMON_RESULT_ERROR_INVALID_PARAM:<br> 1. 参数audioSessionManager为nullptr;<br> 2. 参数callback为nullptr。<br> AUDIOCOMMON_RESULT_ERROR_SYSTEM:系统异常,例如系统服务异常退出等。 | 452 453### OH_AudioSessionManager_SetDefaultOutputDevice() 454 455``` 456OH_AudioCommon_Result OH_AudioSessionManager_SetDefaultOutputDevice(OH_AudioSessionManager *audioSessionManager, OH_AudioDevice_Type deviceType) 457``` 458 459**描述** 460 461设置默认本机内置发声设备。 462> 本接口适用范围如下: 463> 464> - 当设置的[OH_AudioSession_Scene](#oh_audiosession_scene)为VoIP场景时,激活AudioSession后立即生效;如果OH_AudioSession_Scene为非VoIP场景,激活AudioSession时不会生效,直到启动播放的[OH_AudioStream_Usage](capi-native-audiostream-base-h.md#oh_audiostream_usage)为语音消息、VoIP语音通话或VoIP视频通话时才生效。支持听筒、扬声器和系统默认设备。 465> - 本接口允许在[OH_AudioSessionManager](capi-ohaudio-oh-audiosessionmanager.md) 创建后随时调用。系统记录应用设置的默认本机内置发声设备,但只有激活AudioSession后才能生效。应用启动播放时,若外接设备如蓝牙耳机或有线耳机已接入,系统优先从外接设备发声;否则,系统遵循应用设置的默认本机内置发声设备。 466> - 本接口优先级低于[AVCastPicker](../apis-avsession-kit/ohos-multimedia-avcastpicker.md#avcastpicker)。如果使用AVCastPicker切换过发声设备,再次调用本接口切换设备将不生效。 467 468**起始版本:** 20 469 470 471**参数:** 472 473| 参数项 | 描述 | 474| -- | -- | 475| [OH_AudioSessionManager](capi-ohaudio-oh-audiosessionmanager.md) *audioSessionManager | 指向[OH_AudioManager_GetAudioSessionManager](#oh_audiomanager_getaudiosessionmanager)创建的音频会话管理实例。 | 476| [OH_AudioDevice_Type](capi-native-audio-device-base-h.md#oh_audiodevice_type) deviceType | 指向[OH_AudioDevice_Type](capi-native-audio-device-base-h.md#oh_audiodevice_type)用于设置发声设备类型。可设置的设备类型包括:<br> AUDIO_DEVICE_TYPE_EARPIECE:听筒。<br> AUDIO_DEVICE_TYPE_SPEAKER:扬声器。<br> AUDIO_DEVICE_TYPE_DEFAULT:系统默认设备。 | 477 478**返回:** 479 480| 类型 | 说明 | 481| -- | -- | 482| [OH_AudioCommon_Result](capi-native-audio-common-h.md#oh_audiocommon_result) | AUDIOCOMMON_RESULT_SUCCESS:函数执行成功。<br> AUDIOCOMMON_RESULT_ERROR_INVALID_PARAM:<br> 1. 参数audioSessionManager为nullptr;<br> 2. 参数deviceType超出枚举OH_AudioDevice_Type范围。<br> AUDIOCOMMON_RESULT_ERROR_SYSTEM:系统异常,例如系统服务异常退出等。 | 483 484### OH_AudioSessionManager_GetDefaultOutputDevice() 485 486``` 487OH_AudioCommon_Result OH_AudioSessionManager_GetDefaultOutputDevice(OH_AudioSessionManager *audioSessionManager, OH_AudioDevice_Type *deviceType) 488``` 489 490**描述** 491 492获取通过[OH_AudioSessionManager_SetDefaultOutputDevice](#oh_audiosessionmanager_setdefaultoutputdevice)设置的默认发声设备。 493 494**起始版本:** 20 495 496 497**参数:** 498 499| 参数项 | 描述 | 500| -- | -- | 501| [OH_AudioSessionManager](capi-ohaudio-oh-audiosessionmanager.md) *audioSessionManager | 指向[OH_AudioManager_GetAudioSessionManager](#oh_audiomanager_getaudiosessionmanager)创建的音频会话管理实例。 | 502| [OH_AudioDevice_Type](capi-native-audio-device-base-h.md#oh_audiodevice_type) *deviceType | 指向[OH_AudioDevice_Type](capi-native-audio-device-base-h.md#oh_audiodevice_type)用于获取发声设备类型参数指针。返回的设备类型包括:<br> AUDIO_DEVICE_TYPE_EARPIECE:听筒。<br> AUDIO_DEVICE_TYPE_SPEAKER:扬声器。<br> AUDIO_DEVICE_TYPE_DEFAULT:系统默认设备。 | 503 504**返回:** 505 506| 类型 | 说明 | 507| -- | -- | 508| [OH_AudioCommon_Result](capi-native-audio-common-h.md#oh_audiocommon_result) | AUDIOCOMMON_RESULT_SUCCESS:函数执行成功。<br> AUDIOCOMMON_RESULT_ERROR_INVALID_PARAM:<br> 1. 参数audioSessionManager为nullptr;<br> 2. 参数deviceType为nullptr。<br> AUDIOCOMMON_RESULT_ERROR_ILLEGAL_STATE:系统当前状态下不允许获取默认设备类型,例如audio session未处于ready态。 | 509 510### OH_AudioSessionManager_ReleaseDevices() 511 512``` 513OH_AudioCommon_Result OH_AudioSessionManager_ReleaseDevices(OH_AudioSessionManager *audioSessionManager, OH_AudioDeviceDescriptorArray *audioDeviceDescriptorArray) 514``` 515 516**描述** 517 518释放音频设备描述符数组对象。 519 520**起始版本:** 20 521 522 523**参数:** 524 525| 参数项 | 描述 | 526| -- | -- | 527| [OH_AudioSessionManager](capi-ohaudio-oh-audiosessionmanager.md) *audioSessionManager | 指向[OH_AudioManager_GetAudioSessionManager](#oh_audiomanager_getaudiosessionmanager)创建的音频会话管理实例。 | 528| [OH_AudioDeviceDescriptorArray](capi-ohaudio-oh-audiodevicedescriptorarray.md) *audioDeviceDescriptorArray | 需要释放的音频设备描述符数组。 | 529 530**返回:** 531 532| 类型 | 说明 | 533| -- | -- | 534| [OH_AudioCommon_Result](capi-native-audio-common-h.md#oh_audiocommon_result) | AUDIOCOMMON_RESULT_SUCCESS:函数执行成功。<br> AUDIOCOMMON_RESULT_ERROR_INVALID_PARAM:<br> 1. 参数audioSessionManager为nullptr;<br> 2. 参数audioDeviceDescriptorArray为nullptr。 | 535 536### OH_AudioSessionManager_RegisterCurrentOutputDeviceChangeCallback() 537 538``` 539OH_AudioCommon_Result OH_AudioSessionManager_RegisterCurrentOutputDeviceChangeCallback(OH_AudioSessionManager *audioSessionManager, OH_AudioSession_CurrentOutputDeviceChangedCallback callback) 540``` 541 542**描述** 543 544注册当前输出设备变化回调。 545 546**起始版本:** 20 547 548 549**参数:** 550 551| 参数项 | 描述 | 552| -- | -- | 553| [OH_AudioSessionManager](capi-ohaudio-oh-audiosessionmanager.md) *audioSessionManager | 指向[OH_AudioManager_GetAudioSessionManager](#oh_audiomanager_getaudiosessionmanager)创建的音频会话管理实例。 | 554| [OH_AudioSession_CurrentOutputDeviceChangedCallback](#oh_audiosession_currentoutputdevicechangedcallback) callback | 指向OH_AudioSession_CurrentOutputDeviceChangedCallback,用于返回音频设备变更信息的回调函数。 | 555 556**返回:** 557 558| 类型 | 说明 | 559| -- | -- | 560| [OH_AudioCommon_Result](capi-native-audio-common-h.md#oh_audiocommon_result) | AUDIOCOMMON_RESULT_SUCCESS:函数执行成功。<br> AUDIOCOMMON_RESULT_ERROR_INVALID_PARAM:<br> 1. 参数audioSessionManager为nullptr;<br> 2. 参数callback为nullptr。<br> AUDIOCOMMON_RESULT_ERROR_NO_MEMORY:系统内存申请异常。<br> AUDIOCOMMON_RESULT_ERROR_SYSTEM:系统异常,例如系统服务异常退出等。 | 561 562### OH_AudioSessionManager_UnregisterCurrentOutputDeviceChangeCallback() 563 564``` 565OH_AudioCommon_Result OH_AudioSessionManager_UnregisterCurrentOutputDeviceChangeCallback(OH_AudioSessionManager *audioSessionManager, OH_AudioSession_CurrentOutputDeviceChangedCallback callback) 566``` 567 568**描述** 569 570取消注册当前输出设备变化回调。 571 572**起始版本:** 20 573 574 575**参数:** 576 577| 参数项 | 描述 | 578| -- | -- | 579| [OH_AudioSessionManager](capi-ohaudio-oh-audiosessionmanager.md) *audioSessionManager | 指向[OH_AudioManager_GetAudioSessionManager](#oh_audiomanager_getaudiosessionmanager)创建的音频会话管理实例。 | 580| [OH_AudioSession_CurrentOutputDeviceChangedCallback](#oh_audiosession_currentoutputdevicechangedcallback) callback | 指向OH_AudioSession_CurrentOutputDeviceChangedCallback,用于返回音频设备变更信息的回调函数。 | 581 582**返回:** 583 584| 类型 | 说明 | 585| -- | -- | 586| [OH_AudioCommon_Result](capi-native-audio-common-h.md#oh_audiocommon_result) | AUDIOCOMMON_RESULT_SUCCESS:函数执行成功。<br> AUDIOCOMMON_RESULT_ERROR_INVALID_PARAM:<br> 1. 参数audioSessionManager为nullptr;<br> 2. 参数callback为nullptr。<br> AUDIOCOMMON_RESULT_ERROR_SYSTEM:系统异常,例如系统服务异常退出等。 | 587 588 589