0
点赞
收藏
分享

微信扫一扫

docker自建GitLab仓库

柠檬果然酸 2024-05-13 阅读 42

        前面分析了蓝牙电话通话状态的广播,我们可以在蓝牙电话中实时监听蓝牙电话的状态,但如果是其他音乐类 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
举报

相关推荐

0 条评论