Android 2.1+ 暂停来电/去电,完成后恢复

Posted

技术标签:

【中文标题】Android 2.1+ 暂停来电/去电,完成后恢复【英文标题】:Android 2.1+ Pause for incoming/outgoing call, resume when done 【发布时间】:2011-07-13 02:16:09 【问题描述】:

android 中是否有可靠的方法来检测来电和去电的开始和结束,以便执行暂停和播放音频等操作。

我做了以下事情:

    telephonyManager = (TelephonyManager)context.getSystemService(Context.TELEPHONY_SERVICE);
            callEventListener = new PhoneStateListener()

                @Override
                public void onCallStateChanged(int state, String incomingNumber) 
                    super.onCallStateChanged(state, incomingNumber);
                    if (state == TelephonyManager.CALL_STATE_IDLE)
                        //....
                    
                    else if (state == TelephonyManager.CALL_STATE_RINGING)
                        //....
                    
                
            ;
telephonyManager.listen(callEventListener, PhoneStateListener.LISTEN_CALL_STATE);

这似乎适用于来电,但对于去电,我会在对方接听时收到 CALL_STATE_IDLE ......而不是在电话结束时。我想我一定是在做一些愚蠢的事情,或者错过了我可以检查的其他事情?

【问题讨论】:

【参考方案1】:

您是正确的,当您开始拨出电话时,您没有收到任何状态更新。

您需要挂钩到意图广播ACTION_NEW_OUTGOING_CALL。这是一个Android Developer Blog,它可能有助于理解它是一个有序广播的事实。这里有一个blog post,其中有一个简单的例子来说明如何设置和使用这个广播。

【讨论】:

以上是关于Android 2.1+ 暂停来电/去电,完成后恢复的主要内容,如果未能解决你的问题,请参考以下文章

在 android API29+ 中检测来电和去电

无法在 Android 中录制来电和去电的音频

无论如何要为Android中的来电和去电制作我的自定义用户界面吗?

如何注销来电和去电接收者?

手机卫士06_挂电话拦截短信,资产目录_来电去电_自定义吐司

我可以在后台观察来电和去电吗?