Android 蓝牙开发 - A2DP基本功能

  • 时间:2017-05-14
  • 分类:Android开发
  • 2992 人浏览
[导读]本文主要是Android做为Audio Source端,A2DP的基本操作:包括连接、断开连接、设置优先级、获取优先级、获取A2DP连接状态、获取A2DP连接的设备列表等功能。
本文主要是Android做为Audio Source端,A2DP的基本操作:包括连接、断开连接、设置优先级、获取优先级、获取A2DP连接状态、获取A2DP连接的设备列表等功能。

1 简介

A2DP全名是Advanced Audio Distribution Profile,高质量音频数据传输的协议,其定义里了传送单声道或立体声等高质量音频(区别于蓝牙SCO链路上传输的普通语音)信息的协议和过程。A2DP的典型应用是将音乐播放器的音频数据发送到耳机或音箱。
A2DP定义了两种角色:

Audio Source(音频源) 音频的输入端对音频数据进行编码,发送到Sink端。
 Audio Sink(音频接收器) 接收到音频数据后,进行解码操作还原出音频。


2 A2DP profile

要想操作A2DP相关,首先要获取A2DP代理对象,获取代理对象的方法比较简单,如下:

getProfileProxy并不会直接返回A2DP代理对象,而是通过mListener中回调获取。

成功会回调mListener中的onServiceConnected函数,判断proflie是否为BluetoothProfile.A2DP,转换为BluetoothA2dp对象。通过代理对象即可进行A2DP的相关操作了。


3 A2DP操作

A2DP连接首先需要与蓝牙耳机进行配对,如何配对这里就不细说了。
我这里是连接到之前配对过的一个设备。设备名称为:

获取该设备,首先获取配对的蓝牙设备,然后遍历这些蓝牙设备,找出蓝牙名称符合条件的设备,就是要操作的设备,

mConnectDevice为要操作的设备。
1 A2DP连接

BluetoothA2dp中的connect方法是hide的,不能直接访问,需要通过反射的机制获取该方法进行连接。连接成功后手机可以播放音乐,声音就会从蓝牙耳机出来。
2 断开连接

BluetoothA2dp中的disconnect方法也是hide的,与connect类似。
3 设置优先级

PRIORITY_OFF  0  PRIORITY_ON  100  PRIORITY_AUTO_CONNECT  1000  PRIORITY_UNDEFINED  -1

设置优先级是必要的,否则可能导致连接或断开连接失败等问题。

4 获取优先级

5 获取与某设备A2DP连接状态

6 获取连接设备列表

7 A2DP是否正在发送音频流


4 状态监听

通过广播接收者监听A2DP连接状态的改变,A2DP播放状态的改变。

广播接收者,通过intent获取状态值。

来源:本文为线上采编,如涉及作品内容、版权和其它问题,请及时与本网联系,我们将在第一时间删除!