Android 蓝牙开发(二) --手机与蓝牙音箱配对,并播放音频手机音箱「Android 蓝牙开发(二) --手机与蓝牙音箱配对,并播放音频」

   日期:2025-02-24    作者:vyh91 移动:http://www.kub2b.com/mobile/quote/1990.html

上一章中,我们已经学习了传统蓝牙的开发,这一章,我们来学习如何让手机与蓝牙耳机、音箱等连接配对,并实现音频传输。

前面在 Android 蓝牙开发(一) – 传统蓝牙聊天室 的文章中,我们已经对蓝牙知识有个基本认识。而且从 Android 3.0 开始,Bluetooth API 支持蓝牙配置文件,蓝牙配置文件是适用于设备间蓝牙通信的无线接口规范
举个例子:免提配置文件。如果手机要与无线耳机进行连接,则两台设备都必须支持免提配置文件。
而这一章中,我们要学习的就是 A2DP 配置文件

  • A2DP:蓝牙立体声音频传输配置文件 (A2DP) ,定义了如何通过蓝牙连接和流式传输,将高质量音频从一个设备传输至另一个设备。Android 提供 BluetoothA2dp 类,该类是用于控制蓝牙 A2DP 服务的代理。

同时,A2DP 也定义了两个角色

  • Audio Source (音频源) 音频的输入端对音频数据进行编码,发送到Sink端,一般指手机或者其他多媒体设备
  • Audio Sink (音频接收器) 接收到音频数据后,进行解码操作还原出音频,常见为蓝牙音箱或耳机

二、连接设备

那么如何去连接一个蓝牙配置文件呢?你需要遵循以下几个步骤

  1. 获取 BluetoothAdapter
  2. 设置 BluetoothProfile.ServiceListener,它会监听 BluetoothProfile 客户端连接到服务或断开服务时回调
  3. 通过 BluetoothAdapter 的 getProfileProxy() 方法,传入上面的BluetoothProfile.ServiceListener 和 BluetoothProfile.A2DP ,拿到 BluetoothA2dp 对象。
  4. 使用 BluetoothDevice 去配置或者直接连接
  5. 使用 bluetoothAdapter.closeProfileProxy() 关闭代理对象

那么,我们可以这样写

 

接着,需要使用到 BluetoothDevie,这个可以通过 BluetoothAdapter 拿到已配对或直接发现周围设备区拿到,如果你对这个不熟悉,可以查看这篇文章 Android 蓝牙开发(一) – 传统蓝牙聊天室。

首先,当还未配对时,先执行配对方法

 

可以看到,这里使用了反射,用 createRfcommSocket() 方法去建立 RFCOMM 通道,为啥不用 createRfcommSocketToServiceRecord(UUID) ?因为不知道蓝牙音箱或耳机等的 UUID 啊,所以我们用这个方法,用某个通道去尝试连接他们。

当配对之后,只是绑定了设备,还未连接,所以要执行连接的操作

 

可以看到,也是用到了反射的方法的 connect ,它可以通过配置文件去连接设备,这样执行只有,你就能听到的蓝牙音箱或耳机提示 “连接已成功” 的提示音了。

然后你播放一下手机的音视频,发现声音已经传输过去了。

我们无需自己去实现音频的数据传输,BluetoothA2DP 已经帮我们实现好了。

当然,如果你想自己编码且传输数据,再进行解码也是可以的,自己去搞吧。。。


特别提示:本信息由相关用户自行提供,真实性未证实,仅供参考。请谨慎采用,风险自负。


举报收藏 0评论 0
0相关评论
相关最新动态
推荐最新动态
点击排行
{
网站首页  |  关于我们  |  联系方式  |  使用协议  |  隐私政策  |  版权隐私  |  网站地图  |  排名推广  |  广告服务  |  积分换礼  |  网站留言  |  RSS订阅  |  违规举报  |  鄂ICP备2020018471号