• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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