# @ohos.bluetooth.a2dp (蓝牙a2dp模块) 本模块提供基于增强音频分发协议(Advanced Audio Distribution Profile,[A2DP](../../connectivity/terminology.md#a2dp))的蓝牙媒体音频能力,支持获取媒体播放状态和连接状态等方法。 > **说明:** > > 本模块首批接口从API version 10开始支持。后续版本的新增接口,采用上角标单独标记接口的起始版本。 ## 导入模块 ```js import { a2dp } from '@kit.ConnectivityKit'; ``` ## BaseProfile type BaseProfile = baseProfile.BaseProfile 基础Profile接口定义,提供监听和获取连接状态等公共能力。 **系统能力**:SystemCapability.Communication.Bluetooth.Core | 类型 | 说明 | | ----------------------------- | ---------- | | [baseProfile.BaseProfile](js-apis-bluetooth-baseProfile.md#baseprofile) | 基础Profile接口定义。 | ## a2dp.createA2dpSrcProfile createA2dpSrcProfile(): A2dpSourceProfile 创建蓝牙媒体[A2DP Source](../../connectivity/terminology.md#a2dp-source)实例。通过该实例可使用本端作为A2DP Source设备的方法,如:获取和其他设备间的蓝牙媒体音频播放状态。 **系统能力**:SystemCapability.Communication.Bluetooth.Core **返回值:** | 类型 | 说明 | | ----------------------------- | ---------- | | [A2dpSourceProfile](#a2dpsourceprofile) | 返回蓝牙媒体音频源实例。 | **错误码**: 以下错误码的详细介绍请参见[通用错误码说明文档](../errorcode-universal.md)。 | 错误码ID | 错误信息 | | -------- | ---------------------------- | |401 | Invalid parameter. Possible causes: 1. Mandatory parameters are left unspecified. 2. Incorrect parameter types. 3. Parameter verification failed. | |801 | Capability not supported. | **示例:** ```js import { BusinessError } from '@kit.BasicServicesKit'; try { let a2dpProfile = a2dp.createA2dpSrcProfile(); console.info('a2dp success'); } catch (err) { console.error('errCode: ' + (err as BusinessError).code + ', errMessage: ' + (err as BusinessError).message); } ``` ## A2dpSourceProfile 该实例表示蓝牙媒体音频中的[A2DP Source](../../connectivity/terminology.md#a2dp-source)角色。 - 该类继承于[BaseProfile](#baseprofile),因此可以使用其父类中的方法。 - 使用该类的方法前,需通过[createA2dpSrcProfile](#a2dpcreatea2dpsrcprofile)方法构造该类的实例。 - 和该实例角色相对应的是[A2DP Sink](../../connectivity/terminology.md#a2dp-sink)。 ### getPlayingState getPlayingState(deviceId: string): PlayingState 获取本端和对端设备间的媒体音频播放状态。 **需要权限**:ohos.permission.ACCESS_BLUETOOTH **系统能力**:SystemCapability.Communication.Bluetooth.Core **参数:** | 参数名 | 类型 | 必填 | 说明 | | ------ | ------ | ---- | ------- | | deviceId | string | 是 | 对端设备地址,例如:"XX:XX:XX:XX:XX:XX"。 | **返回值:** | 类型 | 说明 | | ----------------------------- | ---------- | | [PlayingState](#playingstate) | 蓝牙媒体音频播放状态。 | **错误码**: 以下错误码的详细介绍请参见[通用错误码说明文档](../errorcode-universal.md)和[蓝牙服务子系统错误码](errorcode-bluetoothManager.md)。 | 错误码ID | 错误信息 | | -------- | ---------------------------- | |201 | Permission denied. | |401 | Invalid parameter. Possible causes: 1. Mandatory parameters are left unspecified. 2. Incorrect parameter types. 3. Parameter verification failed. | |801 | Capability not supported. | |2900001 | Service stopped. | |2900003 | Bluetooth disabled. | |2900004 | Profile not supported. | |2900099 | Operation failed. | **示例:** ```js import { BusinessError } from '@kit.BasicServicesKit'; try { let a2dpSrc = a2dp.createA2dpSrcProfile(); let state = a2dpSrc.getPlayingState('XX:XX:XX:XX:XX:XX'); } catch (err) { console.error('errCode: ' + (err as BusinessError).code + ', errMessage: ' + (err as BusinessError).message); } ``` ## PlayingState 枚举,蓝牙媒体音频播放状态。 **系统能力**:SystemCapability.Communication.Bluetooth.Core | 名称 | 值 | 说明 | | ----------------- | ------ | ------- | | STATE_NOT_PLAYING | 0 | 未播放媒体音频。 | | STATE_PLAYING | 1 | 正在播放媒体音频。 | ## CodecInfo11+ 蓝牙媒体音频使用的编解码器。 **系统能力**:SystemCapability.Communication.Bluetooth.Core | 名称 | 类型 | 只读 | 可选 | 说明 | | ------------------- | ----------------------- | ---- | ---- | -------------------------------------- | | codecType | [CodecType](#codectype11) | 否 | 否 | 编解码器类型,默认值为CODEC_TYPE_SBC。 | | codecBitsPerSample | [CodecBitsPerSample](#codecbitspersample11) | 否 | 否 | 每个采样点的位深,默认值为CODEC_BITS_PER_SAMPLE_NONE。 | | codecChannelMode | [CodecChannelMode](#codecchannelmode11) | 否 | 否 | 编解码器的声道模式,默认值为CODEC_CHANNEL_MODE_NONE。 | | codecSampleRate | [CodecSampleRate](#codecsamplerate11) | 否 | 否 | 编解码器的采样率,默认值为CODEC_SAMPLE_RATE_NONE。 | | codecBitRate19+ | [CodecBitRate](#codecbitrate19) | 否 | 是 | 编解码器的码率,默认值为CODEC_BIT_RATE_ABR。 | | codecFrameLength19+ | [CodecFrameLength](#codecframelength19) | 否 | 是 |编解码器的帧长,默认值为CODEC_FRAME_LENGTH_10MS。 | ## CodecInfoList19+ 蓝牙媒体音频编解码器支持的能力集合。不同编解码器支持的位深、声道模式、采样率、码率和帧长类型与音频接收器设备端能力有关。 **系统能力**:SystemCapability.Communication.Bluetooth.Core | 名称 | 类型 | 只读 | 可选 | 说明 | | ------------------- | ----------------------- | ---- | ---- | -------------------------------------- | | codecType | [CodecType](#codectype11) | 否 | 否 | 编解码器类型。 | | codecBitsPerSampleArray | [CodecBitsPerSample](#codecbitspersample11)[] | 否 | 否 | 编解码器支持的位深能力集合。 | | codecChannelModeArray | [CodecChannelMode](#codecchannelmode11)[] | 否 | 否 | 编解码器支持的声道模式能力集合。 | | codecSampleRateArray | [CodecSampleRate](#codecsamplerate11)[] | 否 | 否 | 编解码器支持的采样率能力集合。 | | codecBitRateArray | [CodecBitRate](#codecbitrate19)[] | 否 | 否 | 编解码器支持的码率能力集合。 | | codecFrameLengthArray | [CodecFrameLength](#codecframelength19)[] | 否 | 否 | 编解码器支持的帧长能力集合。 | ## CodecType11+ 枚举,蓝牙媒体音频编解码器类型。 **系统能力**:SystemCapability.Communication.Bluetooth.Core | 名称 | 值 | 说明 | | ----------------- | ------ | ------- | | CODEC_TYPE_INVALID | -1 | 编解码器类型未知。 | | CODEC_TYPE_SBC | 0 | SBC | | CODEC_TYPE_AAC | 1 | AAC | | CODEC_TYPE_L2HC | 2 | L2HC | | CODEC_TYPE_L2HCST13+ | 3 | L2HCST | | CODEC_TYPE_LDAC13+ | 4 | LDAC | ## CodecChannelMode11+ 枚举,蓝牙媒体音频编解码器的声道模式,表示音频播放时独立的空间信号路径数量。声道模式影响声音的立体感和空间定位‌。 **系统能力**:SystemCapability.Communication.Bluetooth.Core | 名称 | 值 | 说明 | | ----------------- | ------ | ------- | | CODEC_CHANNEL_MODE_NONE | 0 | 声道未知。 | | CODEC_CHANNEL_MODE_MONO | 1 | 单声道。 | | CODEC_CHANNEL_MODE_STEREO | 2 | 双声道。 | ## CodecBitsPerSample11+ 枚举,蓝牙媒体音频编解码器的位深,表示蓝牙音频信号在数字表示中使用的位数,单位为bit。位深决定每个采样点可以表示的动态范围和精度。 **系统能力**:SystemCapability.Communication.Bluetooth.Core | 名称 | 值 | 说明 | | ----------------- | ------ | ------- | | CODEC_BITS_PER_SAMPLE_NONE | 0 | 位深未知。 | | CODEC_BITS_PER_SAMPLE_16 | 1 | 16bit | | CODEC_BITS_PER_SAMPLE_24 | 2 | 24bit | | CODEC_BITS_PER_SAMPLE_32 | 3 | 32bit | ## CodecSampleRate11+ 枚举,蓝牙媒体音频编解码器的采样率,表示每秒对蓝牙音频采样的次数,单位为Hz。采样率的选择会影响音质和传输效率。 **系统能力**:SystemCapability.Communication.Bluetooth.Core | 名称 | 值 | 说明 | | ----------------- | ------ | ------- | | CODEC_SAMPLE_RATE_NONE | 0 | 采样率未知。 | | CODEC_SAMPLE_RATE_44100 | 1 | 44.1kHz | | CODEC_SAMPLE_RATE_48000 | 2 | 48kHz | | CODEC_SAMPLE_RATE_88200 | 3 | 88.2kHz | | CODEC_SAMPLE_RATE_96000 | 4 | 96kHz | | CODEC_SAMPLE_RATE_176400 | 5 | 176.4kHz | | CODEC_SAMPLE_RATE_192000 | 6 | 192kHz | ## CodecBitRate19+ 枚举,蓝牙媒体音频编解码器的码率,表示单位时间内音频数据的传输量,单位为kbps。码率影响音频音质和文件大小。 **系统能力**:SystemCapability.Communication.Bluetooth.Core | 名称 | 值 | 说明 | | ----------------- | ------ | ------- | | CODEC_BIT_RATE_96000 | 0 | 96kbps | | CODEC_BIT_RATE_128000 | 1 | 128kbps | | CODEC_BIT_RATE_192000 | 2 | 192kbps | | CODEC_BIT_RATE_256000 | 3 | 256kbps | | CODEC_BIT_RATE_320000 | 4 | 320kbps | | CODEC_BIT_RATE_480000 | 5 | 480kbps | | CODEC_BIT_RATE_640000 | 6 | 640kbps | | CODEC_BIT_RATE_960000 | 7 | 960kbps | | CODEC_BIT_RATE_ABR | 8 | 自适应码率(根据网络条件自动调整)。| ## CodecFrameLength19+ 枚举,蓝牙媒体音频编解码器的帧长,表示一帧音频数据播放的时长。 **系统能力**:SystemCapability.Communication.Bluetooth.Core | 名称 | 值 | 说明 | | ----------------- | ------ | ------- | | CODEC_FRAME_LENGTH_5MS | 0 | 5ms帧长。 | | CODEC_FRAME_LENGTH_10MS | 1 | 10ms帧长。 |