0

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 ......而不是在电话结束时。我想我一定是在做一些愚蠢的事情,或者错过了我可以检查的其他事情?

4

1 回答 1

1

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

您需要连接到意图广播ACTION_NEW_OUTGOING_CALL。这是一个Android 开发者博客,它可能有助于理解它是一个有序广播的事实。这是一篇博客文章,其中包含如何设置和使用此广播的简单示例。

于 2011-07-13T02:29:19.033 回答