AOKP覚書(android4.3)その82013年10月29日 23:27

こちらの記事を参考に、MVNOのデータ専用SIM利用時のアンテナピクト&セルスタンバイ問題回避のためのスイッチを作ってみた。
スイッチの追加場所はモバイルネットワーク設定。

まずは必要なリソース追加

packages/apps/Phone/res/values/strings.xml
+   <!-- MVNO SIMCard CustomSetting-->
+    <string name="mvno_sim_custom">MVNO DataOnlySIM Patch</string>
+    <string name="mvno_sim_custom_summary_enable"></string>
+    <string name="mvno_sim_custom_summary_disable"></string>

packages/apps/Phone/res/values-ja/strings.xml
+    <!-- MVNO SIMCard CustomSetting-->
+    <string name="mvno_sim_custom">MVNO Data専用SIMパッチ</string>
+    <string name="mvno_sim_custom_summary_enable">MVNO等のDATA専用SIM利用時にアンテナピクト表示およびセルスタンバイ問題を解決する</string>
+    <string name="mvno_sim_custom_summary_disable">MVNO等のDATA専用SIM利用時のアンテナピクト表示およびセルスタンバイ問題パッチを無効にする</string>


packages/apps/Phone/res/xml/network_setting.xml
+    <CheckBoxPreference
+        android:key="mvnosim_custom"
+        android:title="@string/mvno_sim_custom"
+        android:summaryOn="@string/mvno_sim_custom_summary_enable"
+        android:summaryOff="@string/mvno_sim_custom_summary_disable"/>



設定項目用の実装

packages/apps/Phone/src/com/android/phone/MobileNetworkSettings.java

@@ -200,6 +200,14 @@ public class MobileNetworkSettings extends PreferenceActivity
                 android.util.Log.e(LOG_TAG, "Missing SETUP_PREPAID_DATA_SERVICE_URL");
             }
             return true;
+        } else if (preference == mMvnoSimCustom) {
+            //MVNO SIMCard CustomSetting
+            if (mMvnoSimCustom.isChecked()) {
+                SystemProperties.set(MVNO_SIM_CUSTOM_PROPERTY, "true");
+            } else {
+                SystemProperties.set(MVNO_SIM_CUSTOM_PROPERTY, "false");
+            }
+            return true;

         } else {
             // if the button is anything but the simple toggle preference,
             // we'll need to disable all preferences to reject all click

@@ -228,6 +236,14 @@ public class MobileNetworkSettings extends PreferenceActivity
         mButtonPreferredNetworkMode = (ListPreference) prefSet.findPreference(
                 BUTTON_PREFERED_NETWORK_MODE);
         mLteDataServicePref = prefSet.findPreference(BUTTON_CDMA_LTE_DATA_SERVICE_KEY);
+        //MVNO SIMCard CustomSetting
+        mMvnoSimCustom = (CheckBoxPreference) prefSet.findPreference(MVNO_SIM_CUSTOM_KEY);
+        String mvnosim = SystemProperties.get("persist.radio.mvnosim.custom");
+        if ("true".equals(mvnosim)) {
+            mMvnoSimCustom.setChecked(true);
+        } else {
+            mMvnoSimCustom.setChecked(false);
+        }

 
         boolean isLteOnCdma = mPhone.getLteOnCdmaMode() == PhoneConstants.LTE_ON_CDMA_TRUE;
         boolean isLteOnGsm = mPhone.getLteOnGsmMode() != 0;

@@ -705,4 +721,9 @@ public class MobileNetworkSettings extends PreferenceActivity
         }
         return super.onOptionsItemSelected(item);
     }
+
+    //MVNO SIMCard CustomSetting
+    private static final String MVNO_SIM_CUSTOM_PROPERTY = "persist.radio.mvnosim.custom";
+    private static final String MVNO_SIM_CUSTOM_KEY = "mvnosim_custom";
+    private CheckBoxPreference mMvnoSimCustom;

 }

動作部分の実装

frameworks/opt/telephony/src/java/com/android/internal/telephony/ServiceStateTracker.java

@@ -244,7 +245,8 @@ public abstract class ServiceStateTracker extends Handler {
      * data only devices, to fix that use DataRegState.
      */
     protected void useDataRegStateForDataOnlyDevices() {
-        if (mVoiceCapable == false) {
+        String mvnosim = SystemProperties.get("persist.radio.mvnosim.custom");
+        if ("true".equals(mvnosim) || mVoiceCapable == false) {
             if (DBG) {
                 log("useDataRegStateForDataOnlyDevice: VoiceRegState=" + mNewSS.getVoiceRegState()
                     + " DataRegState=" + mNewSS.getDataRegState());


コメント

コメントをどうぞ

※メールアドレスとURLの入力は必須ではありません。 入力されたメールアドレスは記事に反映されず、ブログの管理者のみが参照できます。

※投稿には管理者が設定した質問に答える必要があります。

名前:
メールアドレス:
URL:
次の質問に答えてください:
答えは「MSX」です。

コメント:

トラックバック

このエントリのトラックバックURL: http://miyako.asablo.jp/blog/2013/10/29/7027058/tb

※なお、送られたトラックバックはブログの管理者が確認するまで公開されません。