1# 媒体变更说明 2 3## cl.multimedia.1 音频C接口播放焦点事件回调接口声明变更 4 5对于在API10中新增的音频C接口,播放焦点事件回调接口错写为OH_AudioRenderer_OnInterrptEvent,需要修正为OH_AudioRenderer_OnInterruptEvent。 6 7**变更影响** 8 9对于已发布的C接口,可能影响三方应用的兼容性。 10 11**关键的接口/组件变更** 12 13修改前的接口原型: 14 15 ```C 16int32_t (*OH_AudioRenderer_OnInterrptEvent)( 17 OH_AudioRenderer* renderer, 18 void* userData, 19 OH_AudioInterrupt_ForceType type, 20 OH_AudioInterrupt_Hint hint); 21 ``` 22 23修改后的接口原型: 24 25 ```C 26int32_t (*OH_AudioRenderer_OnInterruptEvent)( 27 OH_AudioRenderer* renderer, 28 void* userData, 29 OH_AudioInterrupt_ForceType type, 30 OH_AudioInterrupt_Hint hint); 31 ``` 32 33**适配指导** 34 35开发人员需要定义播放焦点事件时,使用的函数指针名称为OH_AudioRenderer_OnInterruptEvent。例如: 36 37修改前 38 39```C 40OH_AudioRenderer_Callbacks callbacks; 41callbacks.OH_AudioRenderer_OnInterrptEvent = AudioRendererOnInterrptEvent; 42``` 43 44修改后 45 46```C 47OH_AudioRenderer_Callbacks callbacks; 48callbacks.OH_AudioRenderer_OnInterruptEvent = AudioRendererOnInterrptEvent; 49``` 50 51## cl.multimedia.2 音频C接口录音焦点事件回调接口声明变更 52 53对于在API10中新增的音频C接口,录制焦点事件回调接口错写为OH_AudioCapturer_OnInterrptEvent,需要修正为OH_AudioCapturer_OnInterruptEvent。 54 55**变更影响** 56 57对于已发布的C接口,可能影响三方应用的兼容性。 58 59**关键的接口/组件变更** 60 61修改前的接口原型: 62 63 ```C 64int32_t (*OH_AudioCapturer_OnInterrptEvent)( 65 OH_AudioCapturer* renderer, 66 void* userData, 67 OH_AudioInterrupt_ForceType type, 68 OH_AudioInterrupt_Hint hint); 69 ``` 70 71修改后的接口原型: 72 73 ```C 74int32_t (*OH_AudioCapturer_OnInterruptEvent)( 75 OH_AudioCapturer* capturer, 76 void* userData, 77 OH_AudioInterrupt_ForceType type, 78 OH_AudioInterrupt_Hint hint); 79 ``` 80 81**适配指导** 82 83开发人员需要定义录音焦点事件时,使用的函数指针名称为OH_AudioCapturer_OnInterruptEvent。例如: 84 85修改前 86 87```C 88OH_AudioCapturer_Callbacks callbacks; 89callbacks.OH_AudioCapturer_OnInterrptEvent = AudioCaptureOnInterruptEvent; 90``` 91 92修改后 93 94```C 95OH_AudioCapturer_Callbacks callbacks; 96callbacks.OH_AudioCapturer_OnInterruptEvent = AudioCaptureOnInterruptEvent; 97``` 98 99 100## cl.multimedia.3 @ohos.multimedia.audio.d.ts内带入参的API10接口新增错误码声明 101 102**变更影响** 103 104携带入参的接口,当开发者参数类型或数量传错情况下,接口会同步抛出401错误码的异常,当参数值不符合取值范围,当接口为同步接口,会抛出相应错误码的异常,当接口为异步接口,会通过异步error返回错误码。 105如果接口使用符合定义要求,则无兼容性影响。 106 107**关键的接口/组件变更** 108 109涉及新增错误声明的接口: 110 111 ```ts 112getPreferOutputDeviceForRendererInfo(rendererInfo: AudioRendererInfo, callback: AsyncCallback<AudioDeviceDescriptors>): void; 113getPreferOutputDeviceForRendererInfo(rendererInfo: AudioRendererInfo): Promise<AudioDeviceDescriptors>; 114on(type: 'preferredOutputDeviceChangeForRendererInfo', rendererInfo: AudioRendererInfo, callback: Callback<AudioDeviceDescriptors>): void; 115off(type: 'preferredOutputDeviceChangeForRendererInfo', callback?: Callback<AudioDeviceDescriptors>): void; 116setAudioEffectMode(mode: AudioEffectMode, callback: AsyncCallback<void>): void; 117setAudioEffectMode(mode: AudioEffectMode): Promise<void>; 118 ``` 119 120涉及新增的错误码类型: 121 122 ```ts 123// 入参类型或数量缺少 124@throws { BusinessError } 401 - If input parameter type or number mismatch. 125// 入参值不符合取值范围 126@throws { BusinessError } 6800101 - Invalid parameter error. 127// 系统通用内部错误 128@throws { BusinessError } 6800301 - System error. 129 ``` 130 131**适配指导** 132 133接口使用时,当发现抛出错误码为401的异常,开发者需要检查传入的参数类型和数量是否符合接口定义。 134当发现接口异步返回了错误,可以根据错误码,检查接口错误的原因,进行合理的异常处置。 135 136 137## cl.multimedia.4 AudioRenderer.getCurrentOutputDevices接口实现错误修正 138 139AudioRenderer的getCurrentOutputDevices接口,按照API定义,应返回AudioDeviceDescriptors类型,即AudioDeviceDescriptor类型的数组,但在历史版本内,实现和xts用例都错误的使用AudioDeviceDescriptor类型进行实现和测试,在新版本修复此问题,正确返回AudioDeviceDescriptors数组类型 140 141**变更影响** 142 143已在Beta版本发布的ts接口,影响按照错误的示范使用接口的三方应用的兼容性。 144 145**关键的接口/组件变更** 146 147修改前的接口原型: 148 149```ts 150// interface AudioRenderer 151getCurrentOutputDevices(callback: AsyncCallback<AudioDeviceDescriptors>): void 152getCurrentOutputDevices(): Promise<AudioDeviceDescriptors>; 153``` 154 155修改后的接口原型: 156 157接口定义不变,但实现正确返回AudioDeviceDescriptors数组类型 158 159**适配指导** 160 161如开发者需要按照接口声明的类型去使用API,无需适配。 162如果参考了历史xts写法,并屏蔽了调用时与接口定义不匹配的告警,则需要修改为按照API定义使用。 163 164## cl.multimedia.5 401同步错误码接口实现修正 165 166部分含入参的API10接口,当开发者没有传递足够的必选参数,或是传递的参数类型错误,接口应当按照接口声明,以同步方式抛出异常,提醒开发者在应用调试过程中出现此类接口使用错误问题。 167当前版本修正了部分接口没有按此预期抛出错误的问题 168 169**变更影响** 170 171仅影响错误使用接口的场景 172 173**关键的接口/组件变更** 174 175修改前的接口原型: 176 177```ts 178// interface AudioRenderer 179adjustVolumeByStep(adjustType: VolumeAdjustType, callback: AsyncCallback<void>): void; 180adjustVolumeByStep(adjustType: VolumeAdjustType): Promise<void>; 181adjustSystemVolumeByStep(volumeType: AudioVolumeType, adjustType: VolumeAdjustType, callback: AsyncCallback<void>): void; 182adjustSystemVolumeByStep(volumeType: AudioVolumeType, adjustType: VolumeAdjustType): Promise<void>; 183getSystemVolumeInDb(volumeType: AudioVolumeType, volumeLevel: number, device: DeviceType, callback: AsyncCallback<number>): void; 184getSystemVolumeInDb(volumeType: AudioVolumeType, volumeLevel: number, device: DeviceType): Promise<number>; 185setAudioEffectMode(mode: AudioEffectMode, callback: AsyncCallback<void>): void; 186setAudioEffectMode(mode: AudioEffectMode): Promise<void>; 187getPreferOutputDeviceForRendererInfo(rendererInfo: AudioRendererInfo, callback: AsyncCallback<AudioDeviceDescriptors>): void; 188getPreferOutputDeviceForRendererInfo(rendererInfo: AudioRendererInfo): Promise<AudioDeviceDescriptors>; 189``` 190 191修改后的接口原型: 192 193```ts 194// 401错误码声明描述调整 195@throws { BusinessError } 401 - Input parameter type or number mismatch. 196``` 197 198**适配指导** 199 200正确使用API,无需适配。如发现抛出异常,则说明没有传递足够的必选参数,或是传递的参数类型错误,需要按照API定义传入参数。 201