diff options
author | Jake Hamby <jhamby@google.com> | 2013-02-04 22:13:02 +0000 |
---|---|---|
committer | Gerrit Code Review <noreply-gerritcodereview@google.com> | 2013-02-04 22:13:02 +0000 |
commit | 6d492b6d2d628dd2c97b3ca5dd9e0a031905cb15 (patch) | |
tree | c664306cbd2b2d9e3a96aff381b825dacc6db838 | |
parent | 9e00abc65a29e51683e5cc55e848c6a05ac109a3 (diff) | |
parent | a028d57ae657c29873abd1ba6969f6e4ce835eba (diff) | |
download | android_packages_apps_CellBroadcastReceiver-6d492b6d2d628dd2c97b3ca5dd9e0a031905cb15.tar.gz android_packages_apps_CellBroadcastReceiver-6d492b6d2d628dd2c97b3ca5dd9e0a031905cb15.tar.bz2 android_packages_apps_CellBroadcastReceiver-6d492b6d2d628dd2c97b3ca5dd9e0a031905cb15.zip |
Merge "CB: Add CDMA CMAS"
-rw-r--r-- | src/com/android/cellbroadcastreceiver/CellBroadcastConfigService.java | 40 | ||||
-rw-r--r-- | src/com/android/cellbroadcastreceiver/CellBroadcastReceiver.java | 25 |
2 files changed, 49 insertions, 16 deletions
diff --git a/src/com/android/cellbroadcastreceiver/CellBroadcastConfigService.java b/src/com/android/cellbroadcastreceiver/CellBroadcastConfigService.java index a321d1be..4258e5cf 100644 --- a/src/com/android/cellbroadcastreceiver/CellBroadcastConfigService.java +++ b/src/com/android/cellbroadcastreceiver/CellBroadcastConfigService.java @@ -27,6 +27,7 @@ import android.telephony.SmsManager; import android.text.TextUtils; import android.util.Log; +import com.android.internal.telephony.cdma.sms.SmsEnvelope; import com.android.internal.telephony.gsm.SmsCbConstants; import static com.android.cellbroadcastreceiver.CellBroadcastReceiver.DBG; @@ -47,6 +48,9 @@ public class CellBroadcastConfigService extends IntentService { static final String ACTION_ENABLE_CHANNELS = "ACTION_ENABLE_CHANNELS"; + static final String EMERGENCY_BROADCAST_RANGE_GSM = + "ro.cb.gsm.emergencyids"; + public CellBroadcastConfigService() { super(TAG); // use class name for worker thread name } @@ -84,7 +88,11 @@ public class CellBroadcastConfigService extends IntentService { // Make sure CMAS Presidential is enabled (See 3GPP TS 22.268 Section 6.2). if (DBG) log("setChannelRange: enabling CMAS Presidential"); - manager.enableCellBroadcast(SmsCbConstants.MESSAGE_ID_CMAS_ALERT_PRESIDENTIAL_LEVEL); + if (CellBroadcastReceiver.phoneIsCdma()) { + manager.enableCellBroadcast(SmsEnvelope.SERVICE_CATEGORY_CMAS_PRESIDENTIAL_LEVEL_ALERT); + } else { + manager.enableCellBroadcast(SmsCbConstants.MESSAGE_ID_CMAS_ALERT_PRESIDENTIAL_LEVEL); + } } /** @@ -99,7 +107,9 @@ public class CellBroadcastConfigService extends IntentService { } // Check for system property defining the emergency channel ranges to enable - String emergencyIdRange = SystemProperties.get("ro.cellbroadcast.emergencyids"); + String emergencyIdRange = (CellBroadcastReceiver.phoneIsCdma()) ? + "" : SystemProperties.get(EMERGENCY_BROADCAST_RANGE_GSM); + if (TextUtils.isEmpty(emergencyIdRange)) { return false; } @@ -132,9 +142,11 @@ public class CellBroadcastConfigService extends IntentService { try { SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(this); Resources res = getResources(); + boolean isCdma = CellBroadcastReceiver.phoneIsCdma(); // Check for system property defining the emergency channel ranges to enable - String emergencyIdRange = SystemProperties.get("ro.cellbroadcast.emergencyids"); + String emergencyIdRange = isCdma ? + "" : SystemProperties.get(EMERGENCY_BROADCAST_RANGE_GSM); boolean enableEmergencyAlerts = prefs.getBoolean( CellBroadcastSettings.KEY_ENABLE_EMERGENCY_ALERTS, true); @@ -147,6 +159,15 @@ public class CellBroadcastConfigService extends IntentService { if (DBG) log("enabling emergency cell broadcast channels"); if (!TextUtils.isEmpty(emergencyIdRange)) { setChannelRange(manager, emergencyIdRange, true); + } else if (isCdma){ + // No emergency channel system property, enable all emergency channels + manager.enableCellBroadcastRange( + SmsEnvelope.SERVICE_CATEGORY_CMAS_PRESIDENTIAL_LEVEL_ALERT, + SmsEnvelope.SERVICE_CATEGORY_CMAS_TEST_MESSAGE); + + // CMAS Presidential must be on. + manager.enableCellBroadcast( + SmsEnvelope.SERVICE_CATEGORY_CMAS_PRESIDENTIAL_LEVEL_ALERT); } else { // No emergency channel system property, enable all emergency channels manager.enableCellBroadcastRange( @@ -163,6 +184,15 @@ public class CellBroadcastConfigService extends IntentService { if (DBG) log("disabling emergency cell broadcast channels"); if (!TextUtils.isEmpty(emergencyIdRange)) { setChannelRange(manager, emergencyIdRange, false); + } else if (isCdma) { + // No emergency channel system property, disable all emergency channels + manager.disableCellBroadcastRange( + SmsEnvelope.SERVICE_CATEGORY_CMAS_PRESIDENTIAL_LEVEL_ALERT, + SmsEnvelope.SERVICE_CATEGORY_CMAS_TEST_MESSAGE); + + // CMAS Presidential must be on. + manager.enableCellBroadcast( + SmsEnvelope.SERVICE_CATEGORY_CMAS_PRESIDENTIAL_LEVEL_ALERT); } else { // No emergency channel system property, disable all emergency channels // except for CMAS Presidential (See 3GPP TS 22.268 Section 6.2) @@ -176,7 +206,9 @@ public class CellBroadcastConfigService extends IntentService { if (DBG) log("disabled emergency cell broadcast channels"); } - if (enableChannel50Alerts) { + if (isCdma) { + if (DBG) log("channel 50 is not aplicable for cdma"); + } else if (enableChannel50Alerts) { if (DBG) log("enabling cell broadcast channel 50"); manager.enableCellBroadcast(50); if (DBG) log("enabled cell broadcast channel 50"); diff --git a/src/com/android/cellbroadcastreceiver/CellBroadcastReceiver.java b/src/com/android/cellbroadcastreceiver/CellBroadcastReceiver.java index 94d71790..ac5b1d89 100644 --- a/src/com/android/cellbroadcastreceiver/CellBroadcastReceiver.java +++ b/src/com/android/cellbroadcastreceiver/CellBroadcastReceiver.java @@ -49,6 +49,7 @@ public class CellBroadcastReceiver extends BroadcastReceiver { startConfigService(context); } else if (Intent.ACTION_AIRPLANE_MODE_CHANGED.equals(action)) { boolean airplaneModeOn = intent.getBooleanExtra("state", false); + if (DBG) log("airplaneModeOn: " + airplaneModeOn); if (!airplaneModeOn) { startConfigService(context); } @@ -62,7 +63,7 @@ public class CellBroadcastReceiver extends BroadcastReceiver { intent.setClass(context, CellBroadcastAlertService.class); context.startService(intent); } else { - Log.e(TAG, "ignoring unprivileged action received " + action); + loge("ignoring unprivileged action received " + action); } } else if (Telephony.Sms.Intents.SMS_SERVICE_CATEGORY_PROGRAM_DATA_RECEIVED_ACTION .equals(action)) { @@ -72,10 +73,10 @@ public class CellBroadcastReceiver extends BroadcastReceiver { if (programDataList != null) { handleCdmaSmsCbProgramData(context, programDataList); } else { - Log.e(TAG, "SCPD intent received with no program_data_list"); + loge("SCPD intent received with no program_data_list"); } } else { - Log.e(TAG, "ignoring unprivileged action received " + action); + loge("ignoring unprivileged action received " + action); } } else { Log.w(TAG, "onReceive() unexpected action " + action); @@ -113,7 +114,7 @@ public class CellBroadcastReceiver extends BroadcastReceiver { break; default: - Log.e(TAG, "Ignoring unknown SCPD operation " + programData.getOperation()); + loge("Ignoring unknown SCPD operation " + programData.getOperation()); } } } @@ -155,19 +156,15 @@ public class CellBroadcastReceiver extends BroadcastReceiver { * @param context the broadcast receiver context */ static void startConfigService(Context context) { - if (phoneIsCdma()) { - if (DBG) log("CDMA phone detected; doing nothing"); - } else { - Intent serviceIntent = new Intent(CellBroadcastConfigService.ACTION_ENABLE_CHANNELS, - null, context, CellBroadcastConfigService.class); - context.startService(serviceIntent); - } + Intent serviceIntent = new Intent(CellBroadcastConfigService.ACTION_ENABLE_CHANNELS, + null, context, CellBroadcastConfigService.class); + context.startService(serviceIntent); } /** * @return true if the phone is a CDMA phone type */ - private static boolean phoneIsCdma() { + static boolean phoneIsCdma() { boolean isCdma = false; try { ITelephony phone = ITelephony.Stub.asInterface(ServiceManager.checkService("phone")); @@ -183,4 +180,8 @@ public class CellBroadcastReceiver extends BroadcastReceiver { private static void log(String msg) { Log.d(TAG, msg); } + + private static void loge(String msg) { + Log.e(TAG, msg); + } } |