首页 > 编程知识 正文

手机蓝牙给mp3传歌,蓝牙音乐播放器哪款好

时间:2023-05-05 01:59:05 阅读:162888 作者:2220

蓝牙音乐在安卓系统中的AVRCP实现

根据《蓝牙音乐之AVRCP》协议分析,音视频远程控制协议分为3358 www.Sina.com/http://www.Sina.com /两部分,因此安卓源代码也相应通常,avrcp对应TG,被配置在手机等接收控制命令的设备中,avrcp控制器对应CT,被配置在蓝牙耳机、车载蓝牙等能够主动开始控制的设备中。

本文介绍了Android版本CT

由于AVRCP内的命令都是以CT端开始请求、TG端回答的形式进行,因此此次共享将CT纳入视野,学习AVRCP协议在Android系统中是如何实现的。

AVRCP协议在Android系统上的配置如下。

从上面的体系结构图中可以看出,AVRCP的体系结构与蓝牙的其他协议类似,但也有区别。 不同之处在于,APP应用层通过安卓系统的媒体浏览器服务media browser服务与蓝牙服务进行通信。 为什么要多管闲事呢?

从安卓官方描述来看,安卓系统通过媒体浏览器服务为大家提供并封装了完整的音乐控制解决方案。 因此,音乐类APP应用可以通过媒体浏览器服务轻松实现音乐控制等功能。 这同样适用于蓝牙音乐,在安卓蓝牙对外提供的接口文件TG中,从安卓版本(API:24 )以后的版本开始

蓝牙音乐APP应用是基于当前系统的安卓版本构建相应的android-9(P版本)来初始化媒体浏览器服务的客户端,即BluetoothAvrcpController

因为BluetoothAvrcpController.sendPassThroughCmd()表示bind的哪个服务,所以可以在蓝牙服务中正确地找到与媒体浏览器对应的服务。 根据蓝牙服务清单文件AndroidManifest.xml中的说明,APP应用程序必须生成相应的ComponentName,并提供软件包名称package和类名class才能生成此变量

mcomponentname=newcomponentname (package,class ); 由于Android版本的迭代相关参数已更改:

33558 www.Sina.com/string package=' com.Android.bluetooth '; string class=' com.Android.bluetooth.a2dp sink.mbs.a2 dpmediabrowserservice ';

33558 www.Sina.com/string package=' com.Android.bluetooth '; string class=' com.Android.bluetooth.avrcp controller.bluetoothmediabrowserservice ';

蓝牙音乐APP最终通过ComponentName提供的音乐控制接口发出相应的指令,指令通过媒体浏览器服务传输到蓝牙服务,通过蓝牙技术

如果继续分析名为BluetoothAvrcpController的BluetoothAvrcpController,并且没有提供协议连接断开的接口,AVRCP协议将如何连接? 还记得《A2DP连接在安卓系统中的实现》留下的洞吧。 A2DP连接成功后,sink端的协议栈会主动发起AVRCP连接。 今天,这篇文章是来填补漏洞的。

MediaBrowser

前期的协议分析表明,AVRCP的连接还与两条通道的建立有关。 http://www.Sina.com/http://www.Sina.com/(双方都支持浏览功能。 该协议的连接过程主要是建立两个L2CAP链路的过程,但第一步仍然是启动SDP服务,这是蓝牙连接不可缺少的连接时序图如下。

蓝牙音乐APP应用只需注册以下系统广播监听AVRCP连接状态的变更即可。

如果APP应用程序还与浏览通道是否成功连接有关,则必须注册并接收以下系统广播:

HCI层上的连接过程如下。

只要两条l2cap链路通道成功建立,且APP应用层也成功绑定到媒体阷览服务框架和蓝牙服务,蓝牙音乐APP即可自由控制远程蓝牙设备上的音乐

该avrcp协议在安卓系统下的实现和连接流程分享到此,感兴趣的朋友欢迎私信留言一起讨论,一起学习,一起进步!

更多互联技术,欢迎关注微信公众号: Connectivity

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。