4,挂断电话流程分析
4.1 InCallUI
点击通话界面的挂断按钮,就会调用CallCardFragment的如下代码,
mFloatingActionButton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
getPresenter().endCallClicked();
}
});
调用流程图如下,
此时, CallCardFragment的 createPresenter方法如下,
public CallCardPresenter createPresenter() {
return new CallCardPresenter();
}
因此, getPresenter方法最后返回的是CallCardPresenter对象, CallCardPresenter的endCallClicked方法如下,
final String callId = mPrimary.getId();//获取id
mPrimary.setState(Call.State.DISCONNECTING);
CallList.getInstance().onUpdate(mPrimary);
TelecomAdapter.getInstance().disconnectCall(callId);
TelecomAdapter的disconnectCall方法如下,
void disconnectCall(String callId) {
android.telecom.Call call = getTelecommCallById(callId);
if (call != null) {
call.disconnect();
} else {
Log.e(this, "error disconnectCall, call not in call list " + callId);
}
}
Call的disconnect方法如下,
public void disconnect() {
mInCallAdapter.disconnectC