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```