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