android 手机链接3g网络的问题
2013-09-19 13:46
274 查看
国内使用3G网络的频段是BI频段,好像是2100吧
1、
屏幕点击过程:settings->more...->Mobile network->network mode
settings_headers.xml
是setting模块的布局文件,其中下面部分的代码对应的是settings中的more..选项:
<!-- Data Usage -->
<header
android:id="@+id/data_usage_settings"
android:fragment="com.android.settings.DataUsageSummary"
android:title="@string/data_usage_summary_title"
android:icon="@drawable/ic_settings_data_usage"
/>
<!-- Operator hook -->
<header
android:fragment="com.android.settings.WirelessSettings"
android:id="@+id/operator_settings">
<intent
android:action="com.android.settings.OPERATOR_APPLICATION_SETTING"
/>
</header>
2、
点击more…以后进入Mobile network,对应的com.android.settings.WirelessSettings.java文件,发现加载:addPreferencesFromResource(R.xml.wireless_settings);
3、
通过wireless_settings.xml文件发现,说明启动了Phone模块的,MobileNetworkSettings.java文件:
<PreferenceScreen
android:key="mobile_network_settings"
android:title="@string/network_settings_title"
android:dependency="toggle_airplane">
<intent
android:action="android.intent.action.MAIN"
android:targetPackage="com.android.phone"
android:targetClass="com.android.phone.MobileNetworkSettings"
/>
</PreferenceScreen>
4、点击network mode时,通过 MobileNetworkSettings.java文件发现加载的phone/res/xml/gum_umts_options.xml,对比发现是里面的控件NetWork
Mode控件:
5、通过gsm_umts_preferred_network_mode_key回到MobileNetworkSettings.java中找寻BUTTON_NETWORK_MODE_KEY.
private static final String BUTTON_NETWORK_MODE_KEY = "gsm_umts_preferred_network_mode_key";
6、找到语句,确定是对象mButtonPreferredNetworkMode:
mButtonPreferredNetworkMode = (ListPreference)prefSet.findPreference(BUTTON_NETWORK_MODE_KEY);
7、找到这个listpreference的点击事件:
publicboolean
onPreferenceChange(Preference preference, Object objValue) {
if (preference ==
mButtonPreferredNetworkMode) {
然后执行里面的语句,设置联网模式:
mPhone.setPreferredNetworkType(modemNetworkMode,
mHandler
.obtainMessage(MyHandler.MESSAGE_SET_PREFERRED_NETWORK_TYPE));
8、跟踪到framework层,找寻Phone.java文件,具体目录所在:frameworks\opt\telephony\src\java\com\android\internal\telephony。
发现Phone.java是一个接口,而被PhoneBase.java文件所实现,设置网络类型的函数。
public void setPreferredNetworkType(int networkType, Message response) {
mCM.setPreferredNetworkType(networkType, response);
}
其实实际上是public CommandsInterface mCM;接口实现的
protected PhoneBase(PhoneNotifier notifier, Context context, CommandsInterface ci,
boolean unitTestMode) {
this.mNotifier = notifier;
this.mContext = context;
mLooper = Looper.myLooper();
mCM = ci;}
9、再看看谁继承了他呢CDMAPhone.java:
public class CDMAPhone extends PhoneBase {
10、最后我在RIL.java文件中找到设置网络类型的地方:
@Override
public void setPhoneType(int phoneType) { // Called by CDMAPhone and GSMPhone constructor
if (RILJ_LOGD) riljLog("setPhoneType=" + phoneType + " old value=" + mPhoneType);
mPhoneType = phoneType;
}
国内使用3G网络的频段是BI频段,好像是2100吧
1、
屏幕点击过程:settings->more...->Mobile network->network mode
settings_headers.xml
是setting模块的布局文件,其中下面部分的代码对应的是settings中的more..选项:
<!-- Data Usage -->
<header
android:id="@+id/data_usage_settings"
android:fragment="com.android.settings.DataUsageSummary"
android:title="@string/data_usage_summary_title"
android:icon="@drawable/ic_settings_data_usage"
/>
<!-- Operator hook -->
<header
android:fragment="com.android.settings.WirelessSettings"
android:id="@+id/operator_settings">
<intent
android:action="com.android.settings.OPERATOR_APPLICATION_SETTING"
/>
</header>
2、
点击more…以后进入Mobile network,对应的com.android.settings.WirelessSettings.java文件,发现加载:addPreferencesFromResource(R.xml.wireless_settings);
3、
通过wireless_settings.xml文件发现,说明启动了Phone模块的,MobileNetworkSettings.java文件:
<PreferenceScreen
android:key="mobile_network_settings"
android:title="@string/network_settings_title"
android:dependency="toggle_airplane">
<intent
android:action="android.intent.action.MAIN"
android:targetPackage="com.android.phone"
android:targetClass="com.android.phone.MobileNetworkSettings"
/>
</PreferenceScreen>
4、点击network mode时,通过 MobileNetworkSettings.java文件发现加载的phone/res/xml/gum_umts_options.xml,对比发现是里面的控件NetWork
Mode控件:
5、通过gsm_umts_preferred_network_mode_key回到MobileNetworkSettings.java中找寻BUTTON_NETWORK_MODE_KEY.
private static final String BUTTON_NETWORK_MODE_KEY = "gsm_umts_preferred_network_mode_key";
6、找到语句,确定是对象mButtonPreferredNetworkMode:
mButtonPreferredNetworkMode = (ListPreference)prefSet.findPreference(BUTTON_NETWORK_MODE_KEY);
7、找到这个listpreference的点击事件:
publicboolean
onPreferenceChange(Preference preference, Object objValue) {
if (preference ==
mButtonPreferredNetworkMode) {
然后执行里面的语句,设置联网模式:
mPhone.setPreferredNetworkType(modemNetworkMode,
mHandler
.obtainMessage(MyHandler.MESSAGE_SET_PREFERRED_NETWORK_TYPE));
8、跟踪到framework层,找寻Phone.java文件,具体目录所在:frameworks\opt\telephony\src\java\com\android\internal\telephony。
发现Phone.java是一个接口,而被PhoneBase.java文件所实现,设置网络类型的函数。
public void setPreferredNetworkType(int networkType, Message response) {
mCM.setPreferredNetworkType(networkType, response);
}
其实实际上是public CommandsInterface mCM;接口实现的
protected PhoneBase(PhoneNotifier notifier, Context context, CommandsInterface ci,
boolean unitTestMode) {
this.mNotifier = notifier;
this.mContext = context;
mLooper = Looper.myLooper();
mCM = ci;}
9、再看看谁继承了他呢CDMAPhone.java:
public class CDMAPhone extends PhoneBase {
10、最后我在RIL.java文件中找到设置网络类型的地方:
@Override
public void setPhoneType(int phoneType) { // Called by CDMAPhone and GSMPhone constructor
if (RILJ_LOGD) riljLog("setPhoneType=" + phoneType + " old value=" + mPhoneType);
mPhoneType = phoneType;
}
1、
屏幕点击过程:settings->more...->Mobile network->network mode
settings_headers.xml
是setting模块的布局文件,其中下面部分的代码对应的是settings中的more..选项:
<!-- Data Usage -->
<header
android:id="@+id/data_usage_settings"
android:fragment="com.android.settings.DataUsageSummary"
android:title="@string/data_usage_summary_title"
android:icon="@drawable/ic_settings_data_usage"
/>
<!-- Operator hook -->
<header
android:fragment="com.android.settings.WirelessSettings"
android:id="@+id/operator_settings">
<intent
android:action="com.android.settings.OPERATOR_APPLICATION_SETTING"
/>
</header>
2、
点击more…以后进入Mobile network,对应的com.android.settings.WirelessSettings.java文件,发现加载:addPreferencesFromResource(R.xml.wireless_settings);
3、
通过wireless_settings.xml文件发现,说明启动了Phone模块的,MobileNetworkSettings.java文件:
<PreferenceScreen
android:key="mobile_network_settings"
android:title="@string/network_settings_title"
android:dependency="toggle_airplane">
<intent
android:action="android.intent.action.MAIN"
android:targetPackage="com.android.phone"
android:targetClass="com.android.phone.MobileNetworkSettings"
/>
</PreferenceScreen>
4、点击network mode时,通过 MobileNetworkSettings.java文件发现加载的phone/res/xml/gum_umts_options.xml,对比发现是里面的控件NetWork
Mode控件:
5、通过gsm_umts_preferred_network_mode_key回到MobileNetworkSettings.java中找寻BUTTON_NETWORK_MODE_KEY.
private static final String BUTTON_NETWORK_MODE_KEY = "gsm_umts_preferred_network_mode_key";
6、找到语句,确定是对象mButtonPreferredNetworkMode:
mButtonPreferredNetworkMode = (ListPreference)prefSet.findPreference(BUTTON_NETWORK_MODE_KEY);
7、找到这个listpreference的点击事件:
publicboolean
onPreferenceChange(Preference preference, Object objValue) {
if (preference ==
mButtonPreferredNetworkMode) {
然后执行里面的语句,设置联网模式:
mPhone.setPreferredNetworkType(modemNetworkMode,
mHandler
.obtainMessage(MyHandler.MESSAGE_SET_PREFERRED_NETWORK_TYPE));
8、跟踪到framework层,找寻Phone.java文件,具体目录所在:frameworks\opt\telephony\src\java\com\android\internal\telephony。
发现Phone.java是一个接口,而被PhoneBase.java文件所实现,设置网络类型的函数。
public void setPreferredNetworkType(int networkType, Message response) {
mCM.setPreferredNetworkType(networkType, response);
}
其实实际上是public CommandsInterface mCM;接口实现的
protected PhoneBase(PhoneNotifier notifier, Context context, CommandsInterface ci,
boolean unitTestMode) {
this.mNotifier = notifier;
this.mContext = context;
mLooper = Looper.myLooper();
mCM = ci;}
9、再看看谁继承了他呢CDMAPhone.java:
public class CDMAPhone extends PhoneBase {
10、最后我在RIL.java文件中找到设置网络类型的地方:
@Override
public void setPhoneType(int phoneType) { // Called by CDMAPhone and GSMPhone constructor
if (RILJ_LOGD) riljLog("setPhoneType=" + phoneType + " old value=" + mPhoneType);
mPhoneType = phoneType;
}
国内使用3G网络的频段是BI频段,好像是2100吧
1、
屏幕点击过程:settings->more...->Mobile network->network mode
settings_headers.xml
是setting模块的布局文件,其中下面部分的代码对应的是settings中的more..选项:
<!-- Data Usage -->
<header
android:id="@+id/data_usage_settings"
android:fragment="com.android.settings.DataUsageSummary"
android:title="@string/data_usage_summary_title"
android:icon="@drawable/ic_settings_data_usage"
/>
<!-- Operator hook -->
<header
android:fragment="com.android.settings.WirelessSettings"
android:id="@+id/operator_settings">
<intent
android:action="com.android.settings.OPERATOR_APPLICATION_SETTING"
/>
</header>
2、
点击more…以后进入Mobile network,对应的com.android.settings.WirelessSettings.java文件,发现加载:addPreferencesFromResource(R.xml.wireless_settings);
3、
通过wireless_settings.xml文件发现,说明启动了Phone模块的,MobileNetworkSettings.java文件:
<PreferenceScreen
android:key="mobile_network_settings"
android:title="@string/network_settings_title"
android:dependency="toggle_airplane">
<intent
android:action="android.intent.action.MAIN"
android:targetPackage="com.android.phone"
android:targetClass="com.android.phone.MobileNetworkSettings"
/>
</PreferenceScreen>
4、点击network mode时,通过 MobileNetworkSettings.java文件发现加载的phone/res/xml/gum_umts_options.xml,对比发现是里面的控件NetWork
Mode控件:
5、通过gsm_umts_preferred_network_mode_key回到MobileNetworkSettings.java中找寻BUTTON_NETWORK_MODE_KEY.
private static final String BUTTON_NETWORK_MODE_KEY = "gsm_umts_preferred_network_mode_key";
6、找到语句,确定是对象mButtonPreferredNetworkMode:
mButtonPreferredNetworkMode = (ListPreference)prefSet.findPreference(BUTTON_NETWORK_MODE_KEY);
7、找到这个listpreference的点击事件:
publicboolean
onPreferenceChange(Preference preference, Object objValue) {
if (preference ==
mButtonPreferredNetworkMode) {
然后执行里面的语句,设置联网模式:
mPhone.setPreferredNetworkType(modemNetworkMode,
mHandler
.obtainMessage(MyHandler.MESSAGE_SET_PREFERRED_NETWORK_TYPE));
8、跟踪到framework层,找寻Phone.java文件,具体目录所在:frameworks\opt\telephony\src\java\com\android\internal\telephony。
发现Phone.java是一个接口,而被PhoneBase.java文件所实现,设置网络类型的函数。
public void setPreferredNetworkType(int networkType, Message response) {
mCM.setPreferredNetworkType(networkType, response);
}
其实实际上是public CommandsInterface mCM;接口实现的
protected PhoneBase(PhoneNotifier notifier, Context context, CommandsInterface ci,
boolean unitTestMode) {
this.mNotifier = notifier;
this.mContext = context;
mLooper = Looper.myLooper();
mCM = ci;}
9、再看看谁继承了他呢CDMAPhone.java:
public class CDMAPhone extends PhoneBase {
10、最后我在RIL.java文件中找到设置网络类型的地方:
@Override
public void setPhoneType(int phoneType) { // Called by CDMAPhone and GSMPhone constructor
if (RILJ_LOGD) riljLog("setPhoneType=" + phoneType + " old value=" + mPhoneType);
mPhoneType = phoneType;
}
相关文章推荐
- 获取Android当前网络类型(2g、3g、4g、wifi)以及手机型号、版本号
- Android端如何获取手机当前的网络状态,比如wifi还是3G, 还是2G, 电信还是联通,还是移动
- Android 手机 链接 网络打印机
- 解决因手机客户端android网络不稳定而导致asmack不能自动重连接openfire的问题
- Android手机浏览器访问本地网络相关问题
- Android中手机的网络状态(判断是否联网/3G/4G/WIFI)
- Android开发-常用工具方法(dp转成px、网络是否可用、是否3G网络、Gps是否打开、判断手机号码等)
- Android之判断手机连接的网络类型是WIFI还是2G/3G/4G(转载)
- 获取Android当前网络类型(2g、3g、4g、wifi)以及手机型号、版本号
- Android手机浏览器访问本地网络相关问题
- Android端如何获取手机当前的网络状态,比如wifi还是3G, 还是2G, 电信还是联通,还是移动
- Android下检测手机移动网络、WIFI网络是否开启或链接
- Android 判断手机网络是否链接
- Android:关于Android Studio连接手机的各种问题 & 解决“通常每个套接字地址(协议/网络地址/端口)只允许使用一次(10048)”的问题。
- Android端如何获取手机当前的网络状态,比如wifi还是3G, 还是2G, 电信还是联通,还是移动
- 获取android手机当前网络链接IP的方法
- Android手机监视网络状态的变化--关于权限的一个小问题
- 判断android手机网络链接
- 手机客户端android网络不稳定而导致asmack不能自动重连接openfire的问题
- [Android开发常见问题-6] 如何检测手机当前网络是否可用?