在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 ...而不是在电话结束时。我想我必须做一些愚蠢的事情,或者遗漏一些我可以检查的东西?
答案 0 :(得分:1)
你是正确的,因为你在开始一个外出呼叫时没有得到任何状态更新。
你需要挂钩意图广播ACTION_NEW_OUTGOING_CALL。这是一个Android Developer Blog,可能有助于理解这是一个有序广播的事实。这里有一个blog post,其中有一个如何设置和使用此广播的简单示例。