当前位置: 首页 > news >正文

Android 蓝牙实战——蓝牙音乐播放/暂停状态(二十二)

        对于蓝牙音乐的播放状态,我们首先主要处理的是 onPlayStatusChanged() 回调,这是协议栈通知 FW 层的一个回调接口。还有一个就是 getPlayBackState() 方法,这是媒体应用在初始化时未收到回调信息主动获取当前状态的方法。我们这里就来分析一下这两个状态的获取流程。

一、状态回调

1、AvrcpControllerService 

源码位置:/packages/apps/Bluetooth/src/com/android/bluetooth/avrcpcontroller/AvrcpControllerService.java

onPlayStatusChanged

        这个回调比较重要,直接接收协议栈返回的播放状态变化接口,很多 Bug 的播放状态分析都是以这个接口的状态为参考,所以记住这里打印的 LOG。

// Called by JNI on changes of play status
private synchronized void onPlayStatusChanged(byte[] address, byte playStatus) {if (DBG) {Log.d(TAG, "onPlayStatusChanged " + playStatus);}BluetoothDevice device = getAnonymousDevice(address);AvrcpControllerStateMachine stateMachine = getStateMachine(device);if (stateMachine != null) {stateMachine.sendMessage(AvrcpControllerStateMachine.MESSAGE_PROCESS_PLAY_STATU
http://www.lryc.cn/news/347498.html

相关文章:

  • linux学习:视频输入+V4L2
  • [AutoSar]BSW_Diagnostic_004 ReadDataByIdentifier(0x22)的配置和实现
  • C语言笔记13
  • JavaScript进阶——04-创建对象和继承
  • 队列(详解)
  • 【原创】nnUnet V1在win11下的安装与配置
  • C语言之指针初阶
  • 异常检测的学习和实战
  • RabbitMQ 面试题(一)
  • org.postgresql.util.PSQLException: 错误: 关系 “dual“ 不存在
  • mysql权限分类
  • 【C++11】列表初始化、右值引用的详细讲解(上)
  • 【JAVA进阶篇教学】第十三篇:Java中volatile关键字讲解
  • 蓝桥杯-地宫取宝
  • 带头单链表 C++实现
  • 学习c#第24天 枚举类型
  • TensorFlow运行bug汇总
  • docker部署调度程序
  • websocket和http协议的区别
  • CSS之定位
  • [IM002][Microsoft][ODBC 驱动程序管理器] 未发现数据源名称并且未指定默认驱动程序
  • 神经网络复习--神经网络算法模型及BP算法
  • 【Java】/*方法的使用-快速总结*/
  • kotlin中协程相关
  • (自适应手机端)物流运输快递仓储网站模板 - 带三级栏目
  • Navicat导出表结构到Excel或Word
  • Golang编译优化——稀疏条件常量传播
  • 人工智能培训讲师咨询叶梓介绍及智能医疗技术与ChatGPT临床应用三日深度培训提纲
  • HCIP(BGP综合实验)--8
  • 深入理解C++中的Vector容器:用容器构建高效程序