# 媒体å系统音频接å£å˜æ›´è¯´æ˜Ž ## c1.multimedia.1 ohos.multimedia.audio AudioManager接å£setAudioParameter/getAudioParameter废弃 **访问级别** å…¬å¼€æŽ¥å£ **åºŸå¼ƒåŽŸå› ** ä¸å†å¼€æ”¾ä¸‰æ–¹åº”ç”¨ä¸ŽéŸ³é¢‘èŠ¯ç‰‡é€šè¿‡å®šåˆ¶å‚æ•°ç›´æŽ¥ä¿®æ”¹é…置的通é“ï¼Œæ”¶å½’ç³»ç»Ÿå†…éƒ¨ç®¡æŽ§ï¼Œé€šç”¨åŠŸèƒ½ç”±ä¸“æœ‰æŽ¥å£æ›¿ä»£ **废弃影å“** éžå…¼å®¹æ€§å˜æ›´ï¼Œéœ€è¦å¼€å‘者进行适é…。 **废弃å‘生版本** 从OpenHarmony SDK 4.1.6.5开始。 **废弃的接å£** 接å£å±žäºŽAudioManager setAudioParameter(key: string, value: string, callback: AsyncCallback<void>): void; setAudioParameter(key: string, value: string): Promise<void>; getAudioParameter(key: string, callback: AsyncCallback<string>): void; getAudioParameter(key: string): Promise<string>; **适酿Œ‡å¯¼** å¯¹äºŽç³»ç»Ÿåº”ç”¨ï¼Œæ ¹æ®åºŸå¼ƒæŽ¥å£æç¤ºï¼Œä½¿ç”¨æ›¿ä»£æŽ¥å£ï¼š setExtraParameters(mainKey: string, kvpairs: Record<string, string>): Promise<void>; getExtraParameters(mainKey: string, subKeys?: Array<string>): Promise<Record<string, string>>; mainKey与原接å£å‚æ•°keyä¿æŒä¸€è‡´ï¼Œkvpairs是原有valueå—符串内多个key-valueé…对的拆分写法。 å¯¹äºŽä¸‰æ–¹åº”ç”¨ï¼Œæœ¬æŽ¥å£æä¾›çš„åŠŸèƒ½æœ¬èº«ä¸å¯¹ä¸‰æ–¹å¼€æ”¾ï¼Œè¯·æŒ‰éœ€ä½¿ç”¨ç³»ç»Ÿåœ¨AudioManager模å—ä¸æä¾›çš„å…¬å¼€éŸ³é¢‘ç®¡ç†æŽ¥å£ã€‚ 废弃接å£ä¼šåœ¨è‡³å°‘5个SDKç‰ˆæœ¬å†…ä¿æŒå…¼å®¹ï¼Œè¯·åº”用按需规划适é…计划。 ## c1.multimedia.2 ohos.multimedia.audio AudioVolumeGroupManager接å£setMicrophoneMute废弃 **访问级别** å…¬å¼€æŽ¥å£ **åºŸå¼ƒåŽŸå› ** è™½ç„¶æœ¬æŽ¥å£æ˜¯å…¬å¼€æŽ¥å£ï¼Œä½†ä½¿ç”¨æœ¬æŽ¥å£éœ€è¦èŽ·å–æƒé™ohos.permission.MANAGE_AUDIO_CONFIG。 本æƒé™æœªå¼€æ”¾ç»™ä¸‰æ–¹åº”ç”¨ç”³è¯·ï¼Œå› æ¤ä¸‰æ–¹åº”ç”¨å®žé™…æ— æ³•ä½¿ç”¨æœ¬æŽ¥å£æä¾›çš„èƒ½åŠ›ã€‚æ ¹æ®SDK规范,进行废弃,调整为系统接å£ï¼Œä¸å¯¹å¤–å¯è§ã€‚ **废弃影å“** éžå…¼å®¹æ€§å˜æ›´ï¼Œéœ€è¦å¼€å‘者进行适é…。 **废弃å‘生版本** 从OpenHarmony SDK 4.1.6.5开始。 **废弃的接å£** 接å£å±žäºŽAudioVolumeGroupManager setMicrophoneMute(mute: boolean, callback: AsyncCallback<void>): void; setMicrophoneMute(mute: boolean): Promise<void>; **适酿Œ‡å¯¼** ç³»ç»Ÿåº”ç”¨ï¼Œæ ¹æ®åºŸå¼ƒæŽ¥å£æç¤ºï¼Œä½¿ç”¨æ›¿ä»£æŽ¥å£ï¼ŒåŠŸèƒ½å®Œå…¨ä¸€è‡´ï¼š setMicMute(mute: boolean): Promise<void>; ä¸‰æ–¹åº”ç”¨ï¼Œç”±äºŽåŽŸæœ¬å°±æ— æ³•èŽ·å–ohos.permission.MANAGE_AUDIO_CONFIGæƒé™æŽˆæƒï¼ŒåŽŸæŽ¥å£å¤„äºŽæ— æ•ˆçŠ¶æ€ï¼Œå› æ¤å¯¹ä¸‰æ–¹åº”ç”¨æ— å®žé™…å½±å“。 废弃接å£ä¼šåœ¨è‡³å°‘5个SDKç‰ˆæœ¬å†…ä¿æŒå…¼å®¹ï¼Œè¯·åº”用按需规划适é…计划。 ## c1.multimedia.3 ohos.multimedia.audio CaptureFilterOptions属性usagesè¡Œä¸ºå˜æ›´ **访问级别** å…¬å¼€æŽ¥å£ **å˜æ›´åŽŸå› ** 本属性用于在音频内录功能ä¸ï¼Œå¯¹å½•制的音频usage进行ç›é€‰ï¼Œå½“ç›é€‰STREAM_USAGE_VOICE_COMMUNICATIONä½œä¸ºå½•åˆ¶ç›®æ ‡æ—¶ï¼Œ 应用需è¦å…·å¤‡ohos.permission.CAPTURE_VOICE_DOWNLINK_AUDIOæƒé™ã€‚ 但这个æƒé™å¹¶ä¸å¯¹ä¸‰æ–¹åº”用开放授æƒï¼ŒæŒ‰ç…§SDK规范,需è¦å°†æƒé™å‰¥ç¦»å‡ºå…¬å¼€æŽ¥å£ã€‚ **å˜æ›´å½±å“** éžå…¼å®¹æ€§å˜æ›´ï¼Œéœ€è¦å¼€å‘者进行适é…。 **å˜æ›´å‘生版本** 从OpenHarmony SDK 4.1.6.5开始。 **å˜æ›´çš„æŽ¥å£/组件** å˜æ›´å‰ï¼š ``` /** * Filter by stream usages. If you want to capture voice streams, additional permission is needed. * @permission ohos.permission.CAPTURE_VOICE_DOWNLINK_AUDIO * @syscap SystemCapability.Multimedia.Audio.PlaybackCapture * @since 10 */ ``` 接å£å…许调用者ç›é€‰STREAM_USAGE_VOICE_COMMUNICATIONä½œä¸ºå½•åˆ¶ç›®æ ‡ï¼Œä½†éœ€è¦èŽ·å–ohos.permission.CAPTURE_VOICE_DOWNLINK_AUDIOæƒé™ã€‚ å˜æ›´åŽï¼š ``` /** * Filter by stream usages. But not allow to capture voice streams. * @syscap SystemCapability.Multimedia.Audio.PlaybackCapture * @since 11 */ ``` 接å£ä¸å†å…许调用者ç›é€‰STREAM_USAGE_VOICE_COMMUNICATIONä½œä¸ºå½•åˆ¶ç›®æ ‡ï¼Œæƒé™å£°æ˜Žåˆ é™¤ã€‚å½“æ— æƒé™ï¼Œä½†é€‰æ‹©STREAM_USAGE_VOICE_COMMUNICATIONä½œä¸ºå½•åˆ¶ç›®æ ‡æ—¶ï¼Œæ— æ³•åˆ›å»ºAudioCapturer对象,返回ERROR_SYSTEM错误。 **适酿Œ‡å¯¼** ä¸‰æ–¹åº”ç”¨ï¼Œç”±äºŽæœ¬èº«æ— æ³•èŽ·å–æƒé™æŽˆæƒï¼Œæ¤å˜æ›´æ— 任何影å“ï¼Œæ— éœ€é€‚é… ç³»ç»Ÿåº”ç”¨ï¼Œå³ä½¿æ‹¥æœ‰ohos.permission.CAPTURE_VOICE_DOWNLINK_AUDIOæƒé™ï¼Œä¹Ÿä¸å†èƒ½å¤Ÿç›é€‰STREAM_USAGE_VOICE_COMMUNICATIONä½œä¸ºå½•åˆ¶ç›®æ ‡ï¼Œéœ€å°†æ¤ç±»åž‹ä»Žç›é€‰ä¸åˆ 除。 ## c1.multimedia.4 ohos.multimedia.audio AudioManager订阅事件interrupt接å£åºŸå¼ƒ **访问级别** å…¬å¼€æŽ¥å£ **åºŸå¼ƒåŽŸå› ** SDK10æ—¶OpenHarmony已全é¢ä½¿ç”¨å†…置焦点模å¼ï¼Œè§å¼€å‘指å—ä¸çš„[å¤šéŸ³é¢‘æ’æ”¾çš„å¹¶å‘ç–ç•¥](https://gitee.com/openharmony/docs/blob/master/zh-cn/application-dev/media/audio-playback-concurrency.md) 本接å£ä¸ºåކå²é—留的外置焦点接å£ï¼Œä¸Žå†…ç½®ç„¦ç‚¹ç‹¬ç«‹ï¼Œå·²ç»æ— 法起到焦点抢å çš„ä½œç”¨ï¼Œå› æ¤åºŸå¼ƒï¼Œé¿å…误导开å‘者。 **废弃影å“** éžå…¼å®¹æ€§å˜æ›´ï¼Œéœ€è¦å¼€å‘者进行适é…。 **废弃å‘生版本** 从OpenHarmony SDK 4.1.6.5开始。 **废弃的接å£** 接å£å±žäºŽAudioManager on(type: 'interrupt', interrupt: AudioInterrupt, callback: Callback<InterruptAction>): void; off(type: 'interrupt', interrupt: AudioInterrupt, callback?: Callback<InterruptAction>): void; **适酿Œ‡å¯¼** æ ¹æ®å†…置焦点模å¼å®žçŽ°å¤šéŸ³é¢‘å¹¶å‘ç–略控制,å‚考[å¤šéŸ³é¢‘æ’æ”¾çš„å¹¶å‘ç–ç•¥](https://gitee.com/openharmony/docs/blob/master/zh-cn/application-dev/media/audio-playback-concurrency.md) ## c1.multimedia.5 ohos.multimedia.audio AudioRenderer接å£write/AudioCapturer接å£read废弃 **访问级别** å…¬å¼€æŽ¥å£ **åºŸå¼ƒåŽŸå› ** AudioRenderer/AudioCapturer新增了writeData, readData订阅接å£ï¼Œé€šè¿‡å›žè°ƒè¯·æ±‚æ–¹å¼ï¼Œçœå޻开å‘è€…è‡ªè¡Œç®¡ç†æ•°æ®å¤„ç†æ—¶æœºçš„工作。 å¹¶é€šè¿‡è®©ç³»ç»Ÿç®¡ç†æ•°æ®è¯·æ±‚时机,é¿å…出现数æ®è½®è½¬æ—¶æœºä¸å‡†ç¡®å¯¼è‡´çš„underrun/overrun问题。 **废弃影å“** éžå…¼å®¹æ€§å˜æ›´ï¼Œéœ€è¦å¼€å‘者进行适é…。 **废弃å‘生版本** 从OpenHarmony SDK 4.1.6.5开始。 **废弃的接å£** 接å£å±žäºŽAudioRenderer write(buffer: ArrayBuffer, callback: AsyncCallback<number>): void; write(buffer: ArrayBuffer): Promise<number>; 接å£å±žäºŽAudioCapturer read(size: number, isBlockingRead: boolean, callback: AsyncCallback<ArrayBuffer>): void; read(size: number, isBlockingRead: boolean): Promise<ArrayBuffer>; **适酿Œ‡å¯¼** æ ¹æ®åºŸå¼ƒæŽ¥å£æç¤ºï¼Œä½¿ç”¨æ–°æŽ¥å£å³å¯ã€‚ AudioRenderer新接å£ï¼š on(type: 'writeData', callback: Callback<ArrayBuffer>): void; off(type: 'writeData', callback?: Callback<ArrayBuffer>): void; 通过订阅方å¼ï¼Œæ”¶åˆ°Callback时,应用需è¦å¡«å†™æ’放数æ®åˆ°ArrayBuffer内,Callback结æŸåŽï¼Œç³»ç»Ÿä¼šè‡ªåŠ¨ä»ŽArrayBuffer内å–èµ°æ•°æ®è¿›è¡Œè¾“出。 AudioCapturer新接å£ï¼š on(type: 'readData', callback: Callback<ArrayBuffer>): void; off(type: 'readData', callback?: Callback<ArrayBuffer>): void; 通过订阅方å¼ï¼Œæ”¶åˆ°Callback时,应用需è¦ä»ŽArrayBuffer内å–出录音数æ®ï¼ŒCallback结æŸåŽï¼Œç³»ç»Ÿä¼šæŠŠåŽç»å½•音数æ®å¡«å…¥ArrayBuffer,准备触å‘下次回调。 废弃接å£ä¼šåœ¨è‡³å°‘5个SDKç‰ˆæœ¬å†…ä¿æŒå…¼å®¹ï¼Œè¯·åº”用按需规划适é…计划 ## c1.multimedia.6 ohos.multimedia.audio 内录类型获å–åå¥½å½•éŸ³è®¾å¤‡è¡Œä¸ºå˜æ›´ **访问级别** å…¬å¼€æŽ¥å£ **å˜æ›´åŽŸå› ** 在使用内录场景进行录音时,实际并ä¸éœ€è¦ä½¿ç”¨åˆ°éº¦å…‹é£Žå½•音设备,需è¦è¿”回æ£ç¡®çš„设备类型 **å˜æ›´å½±å“** å…¼å®¹æ€§å˜æ›´ï¼Œå¼€å‘æ— éœ€åšä»»ä½•é€‚é… **å˜æ›´å‘生版本** 从OpenHarmony SDK 4.1.6.5开始。 **å˜æ›´çš„æŽ¥å£/组件** AudioRoutingManager接å£: getPreferredInputDeviceForCapturerInfo(capturerInfo: AudioCapturerInfo, callback: AsyncCallback<AudioDeviceDescriptors>): void getPreferredInputDeviceForCapturerInfo(capturerInfo: AudioCapturerInfo): Promise<AudioDeviceDescriptors>; å˜æ›´å‰ï¼š 当输入类型为SOURCE_TYPE_PLAYBACK_CAPTURE时,会返回设备类型为DeviceType.MICçš„AudioDeviceDescriptor å˜æ›´åŽï¼š 当输入类型为SOURCE_TYPE_PLAYBACK_CAPTURE时,会返回设备类型为DeviceType.INVALIDçš„AudioDeviceDescriptor **适酿Œ‡å¯¼** 内录场景下的返回值结果修æ£ï¼Œæ— éœ€é€‚é… ## c1.multimedia.7 ohos.multimedia.audio AudioManager系列订阅接å£è¡Œä¸ºå˜æ›´ **访问级别** å…¬å¼€æŽ¥å£ **å˜æ›´åŽŸå› ** 历å²ç‰ˆæœ¬çš„订阅接å£ï¼Œå®žçްä¸ç¬¦åˆé€šç”¨çš„订阅接å£è§„范,并且å¯èƒ½å¯¼è‡´åº”ç”¨è®¢é˜…çš„å›žè°ƒè¢«è¦†ç›–é—®é¢˜ï¼Œéœ€è¦æ•´æ”¹ **å˜æ›´å½±å“** 如应用使用了多次订阅,预期应为订阅事件å‘生时,所有订阅过的回调函数会被éåŽ†ä¾æ¬¡è°ƒç”¨ï¼Œè€Œéžä»…回调最åŽä¸€æ¬¡è®¢é˜…çš„ **å˜æ›´å‘生版本** 从OpenHarmony SDK 4.1.6.5开始。 **å˜æ›´çš„æŽ¥å£/组件** AudioVolumeManager接å£: on(type: 'volumeChange', callback: Callback<VolumeEvent>): void; AudioVolumeGroupManager接å£: on(type: 'ringerModeChange', callback: Callback<AudioRingMode>): void; on(type: 'micStateChange', callback: Callback<MicStateChangeEvent>): void; AudioRoutingManager接å£: on(type: 'deviceChange', deviceFlag: DeviceFlag, callback: Callback<DeviceChangeAction>): void; AudioStreamManager接å£: on(type: 'audioRendererChange', callback: Callback<AudioRendererChangeInfoArray>): void; on(type: 'audioCapturerChange', callback: Callback<AudioCapturerChangeInfoArray>): void; å˜æ›´å‰ï¼š 当åŒä¸€ä¸ªäº‹ä»¶è¢«é‡å¤è®¢é˜…多次,仅最åŽè®¢é˜…的回调函数能收到事件å‘生的通知 å˜æ›´åŽï¼š 当åŒä¸€ä¸ªäº‹ä»¶è¢«é‡å¤è®¢é˜…多次,所有未去订阅的回调函数,都能收到事件å‘生的通知 **适酿Œ‡å¯¼** ä¸€ä¸ªäº‹ä»¶ä»…è®¢é˜…ä¸€æ¬¡ï¼Œæ— éœ€é€‚é… ä¸€ä¸ªäº‹ä»¶è¢«å¤šæ¬¡è®¢é˜…ï¼Œä½†é¢„æœŸæ˜¯ä¼šè¢«éåŽ†å›žè°ƒï¼Œæ— éœ€é€‚é… ä¸€ä¸ªäº‹ä»¶è¢«å¤šæ¬¡è®¢é˜…ï¼Œä½†é¢„æœŸæ˜¯ä»…æœ‰æœ€åŽä¸€ä¸ªè¢«å›žè°ƒï¼Œéœ€è¦æ·»åŠ off去订阅,将ä¸éœ€è¦çš„å›žè°ƒå‡½æ•°ä»Žè®¢é˜…åˆ—è¡¨åˆ é™¤ ## c1.multimedia.8 ohos.multimedia.audio availableDeviceç³»ç»ŸæŽ¥å£æ·»åŠ é”™è¯¯ç **访问级别** ç³»ç»ŸæŽ¥å£ **å˜æ›´åŽŸå› ** ç³»ç»ŸæŽ¥å£æ·»åŠ ç›¸åº”é”™è¯¯ç **å˜æ›´å½±å“** å…¼å®¹æ€§å˜æ›´ï¼Œå¼€å‘æ— éœ€åšä»»ä½•é€‚é… **å˜æ›´å‘生版本** 从OpenHarmony SDK 4.1.6.5开始。 **å˜æ›´çš„æŽ¥å£/组件** AudioRoutingManager接å£: getAvailableDevices(deviceUsage: DeviceUsage): AudioDeviceDescriptors; on(type: 'availableDeviceChange', deviceUsage: DeviceUsage, callback: Callback<DeviceChangeAction>): void; off(type: 'availableDeviceChange', callback?: Callback<DeviceChangeAction>): void; å˜æ›´å‰ï¼š ä¸‰æ–¹åº”ç”¨è°ƒç”¨ç³»ç»ŸæŽ¥å£æ—¶ï¼Œè¿”回默认结果,订阅ä¸ç”Ÿæ•ˆ å˜æ›´åŽï¼š ä¸‰æ–¹åº”ç”¨è°ƒç”¨ç³»ç»ŸæŽ¥å£æ—¶ï¼ŒæŠ›å‡ºé€šç”¨é”™è¯¯ç 202 **适酿Œ‡å¯¼** ç³»ç»Ÿåº”ç”¨ä½¿ç”¨ï¼Œæ— éœ€é€‚é… ä¸‰æ–¹åº”ç”¨ï¼Œä¸åº”è¯¥ä½¿ç”¨ç³»ç»ŸæŽ¥å£ ## c1.multimedia.9 ohos.multimedia.audioHaptic createPlayeræƒé™å£°æ˜Ž **访问级别** å…¬å¼€æŽ¥å£ **å˜æ›´åŽŸå› ** AudioHapticPlayer内包å«éœ‡åŠ¨åŠŸèƒ½ï¼Œè¿™éƒ¨åˆ†åŠŸèƒ½ç”Ÿæ•ˆä¾èµ–ohos.permission.VIBRATEæƒé™ **å˜æ›´å½±å“** éžå…¼å®¹æ€§å˜æ›´ï¼Œåº”ç”¨å¯æŒ‰ä¸šåŠ¡éœ€è¦æ·»åŠ æƒé™ **å˜æ›´å‘生版本** 从OpenHarmony SDK 4.1.6.5开始。 **å˜æ›´çš„æŽ¥å£/组件** AudioHapticManager接å£: createPlayer(id: number, options?: AudioHapticPlayerOptions): Promise<AudioHapticPlayer>; å˜æ›´å‰ï¼š ``` /** * Create an audio haptic player. This method uses a promise to return the result. * @param { number } id - Source id. * @param { AudioHapticPlayerOptions } options - Options when creating audio haptic player. * @returns { Promise<AudioHapticPlayer> } Promise used to return the result. * @throws { BusinessError } 401 - The parameter check failed. * @throws { BusinessError } 5400102 - Operation not allowed. * @throws { BusinessError } 5400103 - I/O error. * @throws { BusinessError } 5400106 - Unsupport format. * @syscap SystemCapability.Multimedia.AudioHaptic.Core * @since 11 */ ``` æ— æƒé™å£°æ˜Žï¼Œä½†è‹¥ä¸ç”³è¯·æƒé™ï¼Œæ’æ”¾æ— æ³•ä½¿èƒ½éœ‡åŠ¨ï¼Œä»…éŸ³é¢‘æ’æ”¾ å˜æ›´åŽï¼š ``` /** * Create an audio haptic player. This method uses a promise to return the result. If haptics is needed, caller * should have the permission of ohos.permission.VIBRATE. * @permission ohos.permission.VIBRATE * @param { number } id - Source id. * @param { AudioHapticPlayerOptions } options - Options when creating audio haptic player. * @returns { Promise<AudioHapticPlayer> } Promise used to return the result. * @throws { BusinessError } 201 - Permission denied. * @throws { BusinessError } 401 - The parameter check failed. * @throws { BusinessError } 5400102 - Operation not allowed. * @throws { BusinessError } 5400103 - I/O error. * @throws { BusinessError } 5400106 - Unsupport format. * @syscap SystemCapability.Multimedia.AudioHaptic.Core * @since 11 */ ``` å«ohos.permission.VIBRATEæƒé™å£°æ˜Žå’Œæƒé™ç”¨é€”注释说明 **适酿Œ‡å¯¼** 接å£è¡Œä¸ºä¸Žä¿®æ”¹å‰ä¸€è‡´ï¼Œå¦‚果应用需è¦ä½¿ç”¨éœ‡åŠ¨èƒ½åŠ›ï¼Œéœ€è¦ç”³è¯·ohos.permission.VIBRATEæƒé™ ## c1.multimedia.10 ohos.multimedia.audio AudioManager错误ç å®žçŽ°é”™è¯¯ä¿®æ£ **访问级别** å…¬å¼€æŽ¥å£ **å˜æ›´åŽŸå› ** 公开接å£ï¼Œè¿”回的错误ç 类型声明为number,但历å²å®žçŽ°é”™è¯¯ä¸ºstringï¼Œå®žçŽ°ä¿®å¤ **å˜æ›´å½±å“** å£°æ˜Žæ— å˜æ›´ï¼Œéµå¾ªæŽ¥å£å®šä¹‰çš„å¼€å‘è€…æ— éœ€é€‚é… **å˜æ›´å‘生版本** 从OpenHarmony SDK 4.1.6.5开始。 **å˜æ›´çš„æŽ¥å£/组件** AudioManager接å£: getVolume(volumeType: AudioVolumeType, callback: AsyncCallback<number>): void; getVolume(volumeType: AudioVolumeType): Promise<number>; getMaxVolume(volumeType: AudioVolumeType, callback: AsyncCallback<number>): void; getMaxVolume(volumeType: AudioVolumeType): Promise<number>; isMute(volumeType: AudioVolumeType, callback: AsyncCallback<boolean>): void; isMute(volumeType: AudioVolumeType): Promise<boolean>; å˜æ›´å‰ï¼š 接å£é€šè¿‡å¼‚æ¥è¿”回的BusinessError.code值类型为string å˜æ›´åŽï¼š 接å£é€šè¿‡å¼‚æ¥è¿”回的BusinessError.code值类型为number **适酿Œ‡å¯¼** å£°æ˜Žæ— å˜æ›´ï¼Œé”™è¯¯ç 本æ¥å°±å£°æ˜Žçš„就是number类型。 如开å‘è€…æ ¹æ®åކ岿ޥå£å®žé™…返回结果主动å‘现返回的错误ç ä¸ç¬¦åˆå®šä¹‰ï¼Œè€Œç›´æŽ¥ä½¿ç”¨å—ç¬¦ä¸²æ ¡éªŒï¼Œéœ€è¦æ ¹æ®åŽŸæœ‰API定义适é…,使用AudioErrorsæ•°å—错误ç 。