- 易迪拓培训,专注于微波、射频、天线设计工程师的培养
手机没有设定默认sim卡,蓝牙耳机回拨电话则直接使用上一次的sim卡拨出
录入:edatop.com 点击:
【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;
[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;
签到专用组
谢谢分享啊,
申明:网友回复良莠不齐,仅供参考。如需专业帮助,请学习易迪拓培训专家讲授的ADS视频培训课程。
ADS培训课程推荐详情>>
国内最全面、最专业的Agilent ADS培训课程,可以帮助您从零开始,全面系统学习ADS设计应用【More..】
- Agilent ADS教学培训课程套装
- 两周学会ADS2011、ADS2013视频教程
- ADS2012、ADS2013射频电路设计详解
- ADS高低阻抗线微带滤波器设计培训教程
- ADS混频器仿真分析实例视频培训课程
- ADS Momentum电磁仿真设计视频课程
- ADS射频电路与通信系统设计高级培训
- ADS Layout和电磁仿真设计培训视频
- ADS Workspace and Simulators Training Course
- ADS Circuit Simulation Training Course
- ADS Layout and EM Simulation Training Course
- Agilent ADS 内部原版培训教材合集