微波EDA网,见证研发工程师的成长!
首页 > 研发问答 > 手机设计讨论 > MTK手机平台交流 > 电话接通之前发送DTMF

电话接通之前发送DTMF

时间:10-02 整理:3721RD 点击:
[DESCRIPTION]
按照 Spec 要求,电话在接通之后才可以发送 DTMF。但是有些运营商要求电话接通前就要可以发送 DTMF。
比如东南亚很多国家如老挝等有一些服务电话,就需要使用 DTMF 来做回复,而此时电话是没有接通的。
针对L0版本可以参考如下修改,L1版本已经默认合入了修改。
[SOLUTION]
1. CallList.java
// 添加如下函数
public Call getOutgoingOrActive() {
Call retval = getOutgoingCall();
if (retval == null) {
retval = getActiveCall();
}
return retval;
}
2. DialpadFragment.Java (alps/packages/apps/incallui/src/com/android/incallui)
//添加如下函数
/**
* M: ALPS01837728 used to clear digits when call state changes.@{
*/
@Override
public void clearDigits() {
if (mDtmfDialerField != null) {
mDtmfDialerField.setText("");
}
}
/**@}*/
3. DialpadPresenter.java
//修改如下函数
@Override
public void onUiReady(DialpadUi ui) {
super.onUiReady(ui);
InCallPresenter.getInstance().addListener(this);
mCall = CallList.getInstance().getOutgoingOrActive();
}
@Override
public void onStateChange(InCallPresenter.InCallState oldState,
InCallPresenter.InCallState newState, CallList callList) {
/**
* M: ALPS01837728, need to clear digits if call state change.@{
*/
/* Google code:
mCall = callList.getActiveCall();
*/
Call call = callList.getOutgoingOrActive();
if (!Call.areSame(mCall, call)) {
getUi().clearDigits();
}
mCall = call;
/** @} */
Log.d(this, "DialpadPresenter mCall = " + mCall);
}
//增加一个接口
public interface DialpadUi extends Ui {
void setVisible(boolean on);
void appendDigitsToField(char digit);
// / M: add for ALPS01837728.
void clearDigits();
}

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top