[FAQ09807][NW]设定默认开机时的network mode
来源:互联网 发布:win7无损分区软件 编辑:程序博客网 时间:2024/05/16 00:49
[DESCRIPTION]
network mode的常见类型有
WCDMA preferred : 0
GSM only : 1
WCDMA only : 2
GSM UMTS : 3
CDMA : 4
... (参考RILConstants.java)
是透过AT+ERAT把mode的值丢给modem,让modem设定对应的mode。 如果是TDD手机,那么其network mode的值和TD-SCDMA是对应的。
WCDMA preferred -- TD-SCDMA preferred
WCDMA only -- TD-SCDMA only
这个network mode在第一次开机时会有一个参数来记录默认值,这个参数就是PREFERRED_NETOK_MODE,该参数定义在在RILConstants.java中。在SettingProvider loading的时候,这个参数的值就写到Settings.Global.PREFERRED_NETWOK_MODE当中(参考SettingsProvider中的DatabasHelper.java)。然后在make default phone的时候就根据Settings.Global.PREFERRED_NETWOK_MODE取出来的值来使用。
注:因为network mode是End user可以通过操作setting菜单切换的,所以本FAQ只是修改download完第一次开机的network mode默认值
这部分的修改分为两部分:
一、修改第一次开机默认的网络模式
二、修改3G switch/SIM switch后主卡默认的网络模式
具体可以参考下面的修改说明。
一、修改第一次开机默认的网络模式
修改第一次开机默认的网络模式,分为两种情况:
1. 修改为系统默认支持的网络模式
2. 修改为系统默认不支持的网络模式
需要根据实际的需求,参考对应的情况进行修改。
1、修改为系统默认支持的网络模式
在RILConstants.java (path: alps/framework/base/telephony/java/com/android/internal/telephony/)中把PREFERRED_NETWORK_MODE的值修改成需要的值;例如默认设成GSM only:
2、修改为系统默认不支持的网络模式
原生的NETWORK_MODE_*宏只定义了部分网络模式,一些特殊的网络模式组合可能不支持,例如L版本默认不支持2G/4G这种模式。如果要新增一种网络模式,可以参考下面的修改方案(KK版本默认支持4G/2G模式).
2.1. Java层改动
(1)alps\frameworks\base\telephony\java\com\android\internal\telephony\RILConstants.java
增加"4G/2G" network mode
//MTK-START: add for LTE
int NETWORK_MODE_MTK_BASE = 30;
// "4G/2G" item
int NETWORK_MODE_LTE_GSM = NETWORK_MODE_MTK_BASE+5;
int NETWORK_MODE_LTE_GSM_MMDC = NETWORK_MODE_MTK_BASE+6;
//MTK-END: add for LTE
(2)alps\frameworks\opt\telephony\src\java\com\android\internal\telephony\Phone.java
增加"4G/2G"
int NT_MODE_LTE_GSM = RILConstants.NETWORK_MODE_LTE_GSM;
2.2. RILD的处理
(1)alps\vendor\mediatek\proprietary\hardware\ril\mtk-ril\Ril_nw.h
typedef enum
{
NT_WCDMA_PREFERRED_TYPE, // WCDMA preferred (auto mode)
NT_GSM_TYPE, // GSM only
NT_WCDMA_TYPE, // WCDMA only
NT_AUTO_TYPE, // AUTO
NT_LTE_GSM_WCDMA_TYPE = 9,
NT_LTE_ONLY_TYPE = 11,
NT_LTE_WCDMA_TYPE = 12
增加"4G/2G" item
//MTK-START: add for LTE
,NT_MODE_MTK_BASE_TYPE = 30
//for "4G/2G" item
,NT_LTE_GSM_TYPE = (NT_MODE_MTK_BASE_TYPE+5)
,NT_LTE_GSM_MMDC_TYPE = (NT_MODE_MTK_BASE_TYPE+6)
//MTK-END: add for LTE
} NETWORK_TYPE;
(2)alps\vendor\mediatek\proprietary\hardware\ril\mtk-ril\Ril_nw.c
void requestSetPreferredNetworkType(void * data, size_t datalen, RIL_Token t) {
switch(req_type)
{
......
增加"4G/2G" item 的处理
//for "4G/2G" item rat only mode
case NT_LTE_GSM_TYPE:
rat = 4;
rat1= 0;
break;
}
(3)alps\vendor\mediatek\proprietary\hardware\ril\mtk-ril\Ril_nw.c
void requestGetPreferredNetworkType(void * data, size_t datalen, RIL_Token t)
{
......
} else if(nt_type == 5 && prefer_type == 0) {
// 4G/3G
return_type = NT_LTE_WCDMA_TYPE;
} else {
goto error;
}
修改为:
} else if(nt_type == 5 && prefer_type == 0) {
// 4G/3G
return_type = NT_LTE_WCDMA_TYPE;
} else if(nt_type == 4 && prefer_type == 0) {
// 4G/2G (auto)
return_type = NT_LTE_GSM_TYPE;
//for LTE -- END
} else {
goto error;
}
2.3.将添加的2G/4G模式设置为开机的默认模式
alps/framework/base/telephony/java/com/android/internal/telephony/RILConstants.java
//for LTE the preferred nw tyep is "4G preferred"
int PREFERRED_NETWORK_MODE = FeatureOption.MTK_LTE_SUPPORT? NETWORK_MODE_LTE_GSM_WCDMA:NETWORK_MODE_WCDMA_PREF;
改为 "4G/2G":
int PREFERRED_NETWORK_MODE = FeatureOption.MTK_LTE_SUPPORT? NETWORK_MODE_LTE_GSM:NETWORK_MODE_WCDMA_PREF;
由于NETWORK_MODE_LTE_GSM的定义在 int PREFERRED_NETWORK_MODE 之后
麻烦把int PREFERRED_NETWORK_MODE 的定义移到 NETWORK_MODE_LTE_GSM之后,否则会有编译错误。
二、修改3G switch/SIM switch后主卡默认的网络模式
1.KK版本
如果在发生3G switch/SIM switch时也需要修改默认network mode,那么请在GSMPhone.java中的getMaxPreferredNetworkType方法中返回需要的值。
2.L0版本
如果在发生3G switch/SIM switch时也需要修改默认network mode,那么请在DataSubSelector.java中的setCapability方法中修改switch后具备3G/4G capability的sim卡的network mode:
PhoneRatFamily[] rat = new PhoneRatFamily[mPhoneNum];
for (int i = 0; i < mPhoneNum; i++) {
if (phoneId == i) {
log("SIM switch to Phone" + i);
phoneRat[i] = PhoneRatFamily.PHONE_RAT_FAMILY_4G
| PhoneRatFamily.PHONE_RAT_FAMILY_3G
| PhoneRatFamily.PHONE_RAT_FAMILY_2G;
} else {
phoneRat[i] = PhoneRatFamily.PHONE_RAT_FAMILY_2G;
}
3.L1版本
如果在发生3G switch/SIM switch时也需要修改默认network mode,那么请在DataSubSelector.java中的setCapability方法中修改switch后具备3G/4G capability的sim卡的network mode---如下图红色圈起部分:
- [FAQ09807][NW]设定默认开机时的network mode
- android 设定默认开机时的network mode
- 解决 Ubuntu 12.04 无法调节屏幕亮度及开机默认亮度设定的问题
- XP于Ubuntu双系统时开机默认启动顺序到设定
- raw的开机设定(AS5)
- apache默认主页的设定
- 修改第一次开机时的默认壁纸
- 首次开机时的默认动态壁纸
- 一些NW的笔记
- 关于php 中默认时区的设定
- javascript函数默认参数的设定方法
- Eclipse设定文件的默认打开方式
- Eclipse设定文件的默认打开方式
- Eclipse设定文件的默认打开方式
- 使用aspnetpager,设定默认CurrentPageIndex的方法
- Eclipse设定文件的默认打开方式
- Myeclipse 设定文件的默认打开方式
- 使用aspnetpager,设定默认CurrentPageIndex的方法
- Java排序算法-直接选择排序
- 文章标题
- target、this、currentTarget的区别
- Unity面板中的Rotation
- Maven打包生成普通jar包
- [FAQ09807][NW]设定默认开机时的network mode
- 架构师之路(2)细聊分布式ID生成方法
- Tensorflow:如何保存/恢复模型?
- C#中的原子操作Interlocked,你真的了解吗?
- 一些常用的设计模式(策略模式)
- 计算广告基础知识(二)
- 黑客是如何知道我们常用的密码的
- MyBatis源码解析(二)——动态代理实现函数调用
- 算法简介