android 手机链接3g网络的问题

国内使用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;

    }

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值