Android 2.1+暂停呼入/呼出,完成后恢复



在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…等电话结束了再说。我想我一定是做了什么蠢事,或者错过了什么我可以检查的东西?

你是正确的,因为你没有得到任何状态更新,当一个外出呼叫开始。

你需要钩入intent广播ACTION_NEW_OUTGOING_CALL。这里有一个Android开发者博客,可以帮助你理解这是一个有序的广播。下面是一篇博客文章,其中有一个简单的示例,说明如何设置和使用此广播

最新更新