Android 蓝牙实战——蓝牙电话通话状态同步(二十四)

        前面分析了蓝牙电话通话状态的广播,我们可以在蓝牙电话中实时监听蓝牙电话的状态,但如果是其他音乐类 APP 呢,在播放的时候也需要知道当前是否有通话正在进行,但是有完全没必要实时监听电话的状态,这就需要一个获取通话状态的方法。

一、通话状态处理

1、CallsManager

源码位置:/packages/services/Telecomm/src/com/android/server/telecom/CallsManager.java

// 初始表大小设置为16,因为我们在CallsManager构造函数中添加了13个侦听器。
private final Set<CallsManagerListener> mListeners = Collections.newSetFromMap(new ConcurrentHashMap<CallsManagerListener, Boolean>(16, 0.9f, 1));
/**
 * 设置指定呼叫的指定状态。
 */
private void setCallState(Call call, int newState, String tag) {
    ……
    int oldState = call.getState();
    ……
    if (newState != oldState) {
        ……
        if (call.setState(newState, tag)) {
            ……
            // 对于正在跟踪的呼叫,仅广播状态更改。
            if (mCalls.contains(call)) {
                updateCanAddCall();
                updateHasActiveRttCall();
                for (CallsManagerLis

相关推荐

  1. Android 实战——音乐播放进度(

    2024-05-10 16:52:16       13 阅读
  2. android 技术 学习记录

    2024-05-10 16:52:16       12 阅读
  3. Android如何获取设备连接状态

    2024-05-10 16:52:16       18 阅读
  4. android 开关设置

    2024-05-10 16:52:16       35 阅读

最近更新

  1. TCP协议是安全的吗?

    2024-05-10 16:52:16       16 阅读
  2. 阿里云服务器执行yum,一直下载docker-ce-stable失败

    2024-05-10 16:52:16       16 阅读
  3. 【Python教程】压缩PDF文件大小

    2024-05-10 16:52:16       15 阅读
  4. 通过文章id递归查询所有评论(xml)

    2024-05-10 16:52:16       18 阅读

热门阅读

  1. 力扣 673. 最长递增子序列的个数 python AC

    2024-05-10 16:52:16       12 阅读
  2. 深入理解Spring中的@Autowired注解

    2024-05-10 16:52:16       9 阅读
  3. Android Blueprint简介

    2024-05-10 16:52:16       14 阅读
  4. Nanopc T4 使用OpenCV

    2024-05-10 16:52:16       11 阅读
  5. RabbitMQ

    RabbitMQ

    2024-05-10 16:52:16      10 阅读
  6. OceanBase 中的ROWID与Oracle的差异与如何迁移

    2024-05-10 16:52:16       13 阅读
  7. 面试前的刷题,要有充分的准备

    2024-05-10 16:52:16       7 阅读
  8. 【C++ list所有函数举例如何使用】

    2024-05-10 16:52:16       11 阅读
  9. 【AAGNet】GNN模型用于BREP数模分割代码复现笔记

    2024-05-10 16:52:16       12 阅读