• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1# 媒体子系统变更说明
2
3## c1.multimedia.1 音频框架识别USB音频设备类型行为变更
4**访问级别**
5
6公开接口
7
8**变更原因**
9
10原有的USB音频设备在系统侧均识别为耳机输入/输出设备。为了提高识别的准确度,满足应用的UX显示需求,系统侧区分USB耳机和普通的USB音频设备(如音箱)。
11
12**变更影响**
13
14此变更涉及应用适配。
15当音频设备上下线时,会向应用上报某个类型的音频设备上线。应用也可以通过接口主动查询可用的设备类型。针对API18以前的应用,系统的行为保持不变。针对API18及以后的应用,USB型的设备识别和上报发生了如下变更:
16TS接口
17| 平台 | 变更前 | 变更后 |
18| --- | ----- | ----- |
19| 通用 | 同USB地址下只有输入设备,识别为USB_HEADSET。| 同USB地址下只有输入设备,识别为USB_DEVICE。|
20| PC/2in1 | 同USB地址下只有输出设备,识别为USB_HEADSET。| 同USB地址下只有输出设备,识别为USB_DEVICE。|
21
22NDK接口
23| 平台 | 变更前 | 变更后 |
24| --- | ----- | ----- |
25| 通用 | 同USB地址下只有输入设备,识别为AUDIO_DEVICE_USB_HEADSET。| 同USB地址下只有输入设备,识别为AUDIO_DEVICE_USB_DEVICE。|
26| PC/2in1 | 同USB地址下只有输出设备,识别为AUDIO_DEVICE_USB_HEADSET。| 同USB地址下只有输出设备,识别为AUDIO_DEVICE_USB_DEVICE。|
27
28**起始API Level**
29
309
31
32**变更发生版本**
33
34从OpenHarmony 5.1.0.53开始。
35
36**变更的接口/组件**
37
38本次变更后,当单输入或者单输出的USB音频设备接入系统后,如下接口返回的设备类型发生变化:
39
40@ohos.multimedia.audio.d.ts中的ArkTS API:
41
42| 类  | 接口  |
43|---|---|
44| audio.AudioRoutingManager  |  getDevices(deviceFlag: DeviceFlag, callback: AsyncCallback\<AudioDeviceDescriptors>): void |
45| audio.AudioRoutingManager  |  getDevices(deviceFlag: DeviceFlag): Promise\<AudioDeviceDescriptors> |
46| audio.AudioRoutingManager  |  getDevicesSync(deviceFlag: DeviceFlag): AudioDeviceDescriptors |
47| audio.AudioRoutingManager  |  getAvailableDevices(deviceUsage: DeviceUsage): AudioDeviceDescriptors |
48| audio.AudioRoutingManager  |  on(type: 'availableDeviceChange', deviceUsage: DeviceUsage, callback: Callback\<DeviceChangeAction>): void |
49| audio.AudioRoutingManager  |  off(type: 'availableDeviceChange', callback?: Callback\<DeviceChangeAction>): void |
50
51native_audio_routing_manager.h中的C API:
52
53| 接口 |
54|--|
55| OH_AudioCommon_Result OH_AudioRoutingManager_GetDevices(OH_AudioRoutingManager *audioRoutingManager, OH_AudioDevice_Flag deviceFlag, OH_AudioDeviceDescriptorArray **audioDeviceDescriptorArray) |
56| OH_AudioCommon_Result OH_AudioRoutingManager_GetAvailableDevices(OH_AudioRoutingManager *audioRoutingManager, OH_AudioDevice_Usage deviceUsage, OH_AudioDeviceDescriptorArray **audioDeviceDescriptorArray) |
57
58**适配指导**
59
60TS接口
61
62如应用对USB音频设备有特殊处理需求,现在不仅需要处理USB_HEADSET类型的音频设备,还需将USB_DEVICE类型也纳入到处理范围内。
63```cpp
64// 针对usb音频设备做特殊处理
65if (devicetype == DeviceType.USB_HEADSET) {
66  // do sth
67}
68```
69
70变更后:如应用对USB音频设备有特殊处理需求,不仅要考虑USB_HEADSET类型,也要考虑USB_DEVICE类型的音频设备。
71```cpp
72// 针对usb音频设备做特殊处理
73if (devicetype == DeviceType.USB_HEADSET || devicetype == DeviceType.USB_DEVICE) {
74  // do sth
75}
76```
77
78
79NDK接口
80
81如应用对USB音频设备有特殊处理需求,现在不仅需要处理AUDIO_DEVICE_USB_HEADSET类型的音频设备,还需将AUDIO_DEVICE_USB_DEVICE类型也纳入到处理范围内。
82变更前:如应用对USB音频设备有特殊处理需求,仅处理AUDIO_DEVICE_USB_HEADSET类型的音频设备即可。
83```cpp
84// 针对usb音频设备做特殊处理
85if (devicetype == OH_AudioDevice_Type.AUDIO_DEVICE_USB_HEADSET) {
86  // do sth
87}
88```
89
90变更后:如应用对USB音频设备有特殊处理需求,不仅要考虑AUDIO_DEVICE_USB_HEADSET类型,也要考虑AUDIO_DEVICE_USB_DEVICE类型的音频设备。
91```cpp
92// 针对usb音频设备做特殊处理
93if (devicetype == OH_AudioDevice_Type.AUDIO_DEVICE_USB_HEADSET || devicetype == OH_AudioDevice_Type.AUDIO_DEVICE_USB_DEVICE) {
94  // do sth
95}
96```