微波EDA网,见证研发工程师的成长!
首页 > 研发问答 > 手机设计讨论 > MTK手机平台交流 > 手机没有设定默认sim卡,蓝牙耳机回拨电话则直接使用上一次的sim卡拨出

手机没有设定默认sim卡,蓝牙耳机回拨电话则直接使用上一次的sim卡拨出

时间:10-02 整理:3721RD 点击:
【Phone Call】手机没有设定默认SIM卡,蓝牙耳机回拨电话则直接使用上一次的sim卡拨出
[DESCRIPTION]
用蓝牙耳机回拨电话时,如果没有选择默认SIM卡,而是选择了"Always ask"时,不需要弹出选择SIM卡的提示框,而是能够用上一次通话时的SIM卡直接拨出。比如上一次用SIM1通话就用SIM1直接拨出,上一次用SIM2通话就用SIM2拨出
[SOLUTION]
JB7:
1. 仿照bluetoothAtPhonebook.java中的 public String getLastDialledNumber(HashMap rets)添加函数getSimIdOfLastDialledNumber(),从
Calls表中获取simid
2. 修改BluetoothHandsfree.java文件,
先import com.mediatek.phone.SIMInfoWrapper;
import com.android.phone.Constants;
3. 在redial()中,先调用SIMInfoWrapper.getDefault()获取到 SIMInfoWrapper对象,再调用其接口getSimSlotById(),将simId转换为slotid,此
处的simId为通过方法getSimIdOfLastDialledNumber()获取的值,再将slotid作为Extra放到intent中,即将
intent.putExtra(Constants.EXTRA_SLOT_ID, mPhonebook.getDefaultSIM());
修改为
intent.putExtra(Constants.EXTRA_SLOT_ID, slotid);
KK1.MP1 & JB9:
1. 由于BT默认电话信息只存储了number和isVtCall,所以要先增加一个字段,用来存储number对应的simId,所以要在
AtPhonebook的CallNumber中增加此字段,另外需要修改相应的构造函数,及用到CallNumber的地方,把simid加进去
2. 仿照AtPhonebook中的getLastDialledNumber(),增加函数getSimIdofLastDialerdNumber(),用来在calls表中查询字段"simid"(此处simid都是
小写,因为数据库的字段是小写,此处simid是alps/php?mod=tag&id=6090" target="_blank" class="relatedlink">Frameworks/bae/core/java/android/provider/CallLog.java中的内部类Calls中的字段SIM_ID)
3. 修改HeADSetStateMachine中的processDialCall(),仿照
AtPhonebook.CallNumber callNum = mPhonebook.getLastDialledNumber(new AtPhonebook.CallNumber());
获取simId的值,再修改processOutgoingCall(),增加一个参数simId,将刚才的simId值传进来
4. 在processOutgoingCall()中,将simId的值作为Extra放到intent中
5. 弹出sim卡选择的dialog是在SimSelectionCallOptionHandler.java中实现的,在此文件的handleRequest()方法里,先获取intent中的extra值
,也就是simId的值,若此值
不为空,则在
if (simInfoWrapper.getInsertedSimCount() == 0
&& defaultSim != Settings.System.VOICE_CALL_SIM_SETTING_INTERNET)
这个if条件前先判断,如果未设置默认sim卡,且没绑定sim卡,且simId值不为空,则
callbackArgs.id = simId;
callbackArgs.reason = MAKE_CALL_REASON_OK;

签到专用组

谢谢分享啊,

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

网站地图

Top