Merge "Fix GSM CMAS Message test"
diff --git a/tests/testapp/res/layout/test_buttons.xml b/tests/testapp/res/layout/test_buttons.xml
index f43b360..f47b8d1 100644
--- a/tests/testapp/res/layout/test_buttons.xml
+++ b/tests/testapp/res/layout/test_buttons.xml
@@ -65,6 +65,12 @@
         android:layout_width="wrap_content"
         android:layout_height="wrap_content" />
 
+    <CheckBox android:id="@+id/button_additional_lang_broadcast"
+        android:text="@string/button_additional_lang_broadcast"
+        android:layout_marginLeft="20dp"
+        android:layout_width="wrap_content"
+        android:layout_height="wrap_content" />
+
     <!-- ETWS Alerts -->
     <Button android:id="@+id/button_etws_earthquake_type"
         android:text="@string/button_etws_earthquake_type"
diff --git a/tests/testapp/res/values/strings.xml b/tests/testapp/res/values/strings.xml
index f96c1d9..a284775 100644
--- a/tests/testapp/res/values/strings.xml
+++ b/tests/testapp/res/values/strings.xml
@@ -49,6 +49,7 @@
     <string name="button_gsm_ucs2_with_language_type" translatable="false">Send GSM UCS-2 With Language</string>
     <string name="button_gsm_ucs2_with_language_umts_type" translatable="false">Send UMTS UCS-2 With Language</string>
     <string name="button_delay_broadcast" translatable="false">Delay 5 seconds before sending</string>
+    <string name="button_additional_lang_broadcast" translatable="false">Set Additional lang alerts for GSM CMAS</string>
     <string name="message_id_label" translatable="false">Message ID:</string>
     <string name="category_id_label" translatable="false">Category:</string>
 </resources>
diff --git a/tests/testapp/src/com/android/cellbroadcastreceiver/tests/SendGsmCmasMessages.java b/tests/testapp/src/com/android/cellbroadcastreceiver/tests/SendGsmCmasMessages.java
index fb4aa36..c9082a9 100644
--- a/tests/testapp/src/com/android/cellbroadcastreceiver/tests/SendGsmCmasMessages.java
+++ b/tests/testapp/src/com/android/cellbroadcastreceiver/tests/SendGsmCmasMessages.java
@@ -64,72 +64,132 @@
                 AppOpsManager.OP_RECEIVE_EMERGECY_SMS, null, null, Activity.RESULT_OK, null, null);
     }
 
-    public static void testSendCmasPresAlert(Activity activity, int serialNumber) {
-        SmsCbMessage cbMessage = createCmasSmsMessage(
-                SmsCbConstants.MESSAGE_ID_CMAS_ALERT_PRESIDENTIAL_LEVEL, serialNumber, "en",
-                PRES_ALERT, SmsCbCmasInfo.CMAS_SEVERITY_EXTREME,
-                SmsCbCmasInfo.CMAS_URGENCY_EXPECTED, SmsCbCmasInfo.CMAS_CERTAINTY_LIKELY,
-                SmsCbMessage.MESSAGE_PRIORITY_EMERGENCY);
+    public static void testSendCmasPresAlert(
+            Activity activity, int serialNumber, boolean isAdditionalLang) {
+        SmsCbMessage cbMessage =
+                createCmasSmsMessage(
+                        isAdditionalLang
+                                ? SmsCbConstants.MESSAGE_ID_CMAS_ALERT_PRESIDENTIAL_LEVEL_LANGUAGE
+                                : SmsCbConstants.MESSAGE_ID_CMAS_ALERT_PRESIDENTIAL_LEVEL,
+                        serialNumber,
+                        "en",
+                        PRES_ALERT,
+                        SmsCbCmasInfo.CMAS_SEVERITY_EXTREME,
+                        SmsCbCmasInfo.CMAS_URGENCY_EXPECTED,
+                        SmsCbCmasInfo.CMAS_CERTAINTY_LIKELY,
+                        SmsCbMessage.MESSAGE_PRIORITY_EMERGENCY);
 
         sendBroadcast(activity, cbMessage);
     }
 
-    public static void testSendCmasExtremeAlert(Activity activity, int serialNumber) {
-        SmsCbMessage cbMessage = createCmasSmsMessage(
-                SmsCbConstants.MESSAGE_ID_CMAS_ALERT_EXTREME_IMMEDIATE_OBSERVED, serialNumber, "en",
-                EXTREME_ALERT, SmsCbCmasInfo.CMAS_SEVERITY_EXTREME,
-                SmsCbCmasInfo.CMAS_URGENCY_EXPECTED, SmsCbCmasInfo.CMAS_CERTAINTY_OBSERVED,
-                SmsCbMessage.MESSAGE_PRIORITY_EMERGENCY);
+    public static void testSendCmasExtremeAlert(
+            Activity activity, int serialNumber, boolean isAdditionalLang) {
+        SmsCbMessage cbMessage =
+                createCmasSmsMessage(
+                        isAdditionalLang
+                                ? SmsCbConstants
+                                        .MESSAGE_ID_CMAS_ALERT_EXTREME_IMMEDIATE_OBSERVED_LANGUAGE
+                                : SmsCbConstants.MESSAGE_ID_CMAS_ALERT_EXTREME_IMMEDIATE_OBSERVED,
+                        serialNumber,
+                        "en",
+                        EXTREME_ALERT,
+                        SmsCbCmasInfo.CMAS_SEVERITY_EXTREME,
+                        SmsCbCmasInfo.CMAS_URGENCY_EXPECTED,
+                        SmsCbCmasInfo.CMAS_CERTAINTY_OBSERVED,
+                        SmsCbMessage.MESSAGE_PRIORITY_EMERGENCY);
 
         sendBroadcast(activity, cbMessage);
     }
 
-    public static void testSendCmasSevereAlert(Activity activity, int serialNumber) {
-        SmsCbMessage cbMessage = createCmasSmsMessage(
-                SmsCbConstants.MESSAGE_ID_CMAS_ALERT_SEVERE_EXPECTED_OBSERVED, serialNumber, "en",
-                SEVERE_ALERT, SmsCbCmasInfo.CMAS_SEVERITY_SEVERE,
-                SmsCbCmasInfo.CMAS_URGENCY_IMMEDIATE, SmsCbCmasInfo.CMAS_CERTAINTY_LIKELY,
-                SmsCbMessage.MESSAGE_PRIORITY_EMERGENCY);
+    public static void testSendCmasSevereAlert(
+            Activity activity, int serialNumber, boolean isAdditionalLang) {
+        SmsCbMessage cbMessage =
+                createCmasSmsMessage(
+                        isAdditionalLang
+                                ? SmsCbConstants
+                                        .MESSAGE_ID_CMAS_ALERT_SEVERE_EXPECTED_OBSERVED_LANGUAGE
+                                : SmsCbConstants.MESSAGE_ID_CMAS_ALERT_SEVERE_EXPECTED_OBSERVED,
+                        serialNumber,
+                        "en",
+                        SEVERE_ALERT,
+                        SmsCbCmasInfo.CMAS_SEVERITY_SEVERE,
+                        SmsCbCmasInfo.CMAS_URGENCY_IMMEDIATE,
+                        SmsCbCmasInfo.CMAS_CERTAINTY_LIKELY,
+                        SmsCbMessage.MESSAGE_PRIORITY_EMERGENCY);
 
         sendBroadcast(activity, cbMessage);
     }
 
-    public static void testSendCmasAmberAlert(Activity activity, int serialNumber) {
-        SmsCbMessage cbMessage = createCmasSmsMessage(
-                SmsCbConstants.MESSAGE_ID_CMAS_ALERT_CHILD_ABDUCTION_EMERGENCY, serialNumber, "en",
-                AMBER_ALERT, SmsCbCmasInfo.CMAS_SEVERITY_UNKNOWN,
-                SmsCbCmasInfo.CMAS_URGENCY_UNKNOWN, SmsCbCmasInfo.CMAS_CERTAINTY_UNKNOWN,
-                SmsCbMessage.MESSAGE_PRIORITY_EMERGENCY);
+    public static void testSendCmasAmberAlert(
+            Activity activity, int serialNumber, boolean isAdditionalLang) {
+        SmsCbMessage cbMessage =
+                createCmasSmsMessage(
+                        isAdditionalLang
+                                ? SmsCbConstants
+                                        .MESSAGE_ID_CMAS_ALERT_CHILD_ABDUCTION_EMERGENCY_LANGUAGE
+                                : SmsCbConstants.MESSAGE_ID_CMAS_ALERT_CHILD_ABDUCTION_EMERGENCY,
+                        serialNumber,
+                        "en",
+                        AMBER_ALERT,
+                        SmsCbCmasInfo.CMAS_SEVERITY_UNKNOWN,
+                        SmsCbCmasInfo.CMAS_URGENCY_UNKNOWN,
+                        SmsCbCmasInfo.CMAS_CERTAINTY_UNKNOWN,
+                        SmsCbMessage.MESSAGE_PRIORITY_EMERGENCY);
 
         sendBroadcast(activity, cbMessage);
     }
 
-    public static void testSendCmasMonthlyTest(Activity activity, int serialNumber) {
-        SmsCbMessage cbMessage = createCmasSmsMessage(
-                SmsCbConstants.MESSAGE_ID_CMAS_ALERT_REQUIRED_MONTHLY_TEST, serialNumber, "en",
-                MONTHLY_TEST_ALERT, SmsCbCmasInfo.CMAS_SEVERITY_UNKNOWN,
-                SmsCbCmasInfo.CMAS_URGENCY_UNKNOWN, SmsCbCmasInfo.CMAS_CERTAINTY_UNKNOWN,
-                SmsCbMessage.MESSAGE_PRIORITY_EMERGENCY);
+    public static void testSendCmasMonthlyTest(
+            Activity activity, int serialNumber, boolean isAdditionalLang) {
+        SmsCbMessage cbMessage =
+                createCmasSmsMessage(
+                        isAdditionalLang
+                                ? SmsCbConstants
+                                        .MESSAGE_ID_CMAS_ALERT_REQUIRED_MONTHLY_TEST_LANGUAGE
+                                : SmsCbConstants.MESSAGE_ID_CMAS_ALERT_REQUIRED_MONTHLY_TEST,
+                        serialNumber,
+                        "en",
+                        MONTHLY_TEST_ALERT,
+                        SmsCbCmasInfo.CMAS_SEVERITY_UNKNOWN,
+                        SmsCbCmasInfo.CMAS_URGENCY_UNKNOWN,
+                        SmsCbCmasInfo.CMAS_CERTAINTY_UNKNOWN,
+                        SmsCbMessage.MESSAGE_PRIORITY_EMERGENCY);
 
         sendBroadcast(activity, cbMessage);
     }
 
-    public static void testSendPublicSafetyMessagesAlert(Activity activity, int serialNumber) {
-        SmsCbMessage cbMessage = createCmasSmsMessage(
-                SmsCbConstants.MESSAGE_ID_CMAS_ALERT_PUBLIC_SAFETY, serialNumber, "en",
-                PUBLIC_SAFETY_MESSAGE, SmsCbCmasInfo.CMAS_SEVERITY_UNKNOWN,
-                SmsCbCmasInfo.CMAS_URGENCY_UNKNOWN, SmsCbCmasInfo.CMAS_CERTAINTY_UNKNOWN,
-                SmsCbMessage.MESSAGE_PRIORITY_NORMAL);
+    public static void testSendPublicSafetyMessagesAlert(
+            Activity activity, int serialNumber, boolean isAdditionalLang) {
+        SmsCbMessage cbMessage =
+                createCmasSmsMessage(
+                        isAdditionalLang
+                                ? SmsCbConstants.MESSAGE_ID_CMAS_ALERT_PUBLIC_SAFETY_LANGUAGE
+                                : SmsCbConstants.MESSAGE_ID_CMAS_ALERT_PUBLIC_SAFETY,
+                        serialNumber,
+                        "en",
+                        PUBLIC_SAFETY_MESSAGE,
+                        SmsCbCmasInfo.CMAS_SEVERITY_UNKNOWN,
+                        SmsCbCmasInfo.CMAS_URGENCY_UNKNOWN,
+                        SmsCbCmasInfo.CMAS_CERTAINTY_UNKNOWN,
+                        SmsCbMessage.MESSAGE_PRIORITY_NORMAL);
 
         sendBroadcast(activity, cbMessage);
     }
 
-    public static void testSendStateLocalTestAlert(Activity activity, int serialNumber) {
-        SmsCbMessage cbMessage = createCmasSmsMessage(
-                SmsCbConstants.MESSAGE_ID_CMAS_ALERT_STATE_LOCAL_TEST, serialNumber, "en",
-                STATE_LOCAL_ALERT, SmsCbCmasInfo.CMAS_SEVERITY_UNKNOWN,
-                SmsCbCmasInfo.CMAS_URGENCY_UNKNOWN, SmsCbCmasInfo.CMAS_CERTAINTY_UNKNOWN,
-                SmsCbMessage.MESSAGE_PRIORITY_NORMAL);
+    public static void testSendStateLocalTestAlert(
+            Activity activity, int serialNumber, boolean isAdditionalLang) {
+        SmsCbMessage cbMessage =
+                createCmasSmsMessage(
+                        isAdditionalLang
+                                ? SmsCbConstants.MESSAGE_ID_CMAS_ALERT_STATE_LOCAL_TEST_LANGUAGE
+                                : SmsCbConstants.MESSAGE_ID_CMAS_ALERT_STATE_LOCAL_TEST,
+                        serialNumber,
+                        "en",
+                        STATE_LOCAL_ALERT,
+                        SmsCbCmasInfo.CMAS_SEVERITY_UNKNOWN,
+                        SmsCbCmasInfo.CMAS_URGENCY_UNKNOWN,
+                        SmsCbCmasInfo.CMAS_CERTAINTY_UNKNOWN,
+                        SmsCbMessage.MESSAGE_PRIORITY_NORMAL);
 
         sendBroadcast(activity, cbMessage);
     }
@@ -147,11 +207,70 @@
      */
     private static SmsCbMessage createCmasSmsMessage(int serviceCategory, int serialNumber,
             String language, String body, int severity, int urgency, int certainty, int priority) {
-        SmsCbCmasInfo cmasInfo = new SmsCbCmasInfo(serviceCategory,
-                SmsCbCmasInfo.CMAS_CATEGORY_UNKNOWN, SmsCbCmasInfo.CMAS_RESPONSE_TYPE_UNKNOWN,
-                severity, urgency, certainty);
+        int messageClass = getCmasMessageClass(serviceCategory);
+        SmsCbCmasInfo cmasInfo =
+                new SmsCbCmasInfo(
+                        messageClass,
+                        SmsCbCmasInfo.CMAS_CATEGORY_UNKNOWN,
+                        SmsCbCmasInfo.CMAS_RESPONSE_TYPE_UNKNOWN,
+                        severity,
+                        urgency,
+                        certainty);
         return new SmsCbMessage(SmsCbMessage.MESSAGE_FORMAT_3GPP, 0, serialNumber,
                 new SmsCbLocation("123456"), serviceCategory, language, body,
                 priority, null, cmasInfo);
     }
+
+    /**
+     * Returns the CMAS message class.
+     *
+     * @param messageId message identifier
+     * @return the CMAS message class as defined in {@link SmsCbCmasInfo}
+     */
+    private static int getCmasMessageClass(int messageId) {
+        switch (messageId) {
+            case SmsCbConstants.MESSAGE_ID_CMAS_ALERT_PRESIDENTIAL_LEVEL:
+            case SmsCbConstants.MESSAGE_ID_CMAS_ALERT_PRESIDENTIAL_LEVEL_LANGUAGE:
+                return SmsCbCmasInfo.CMAS_CLASS_PRESIDENTIAL_LEVEL_ALERT;
+
+            case SmsCbConstants.MESSAGE_ID_CMAS_ALERT_EXTREME_IMMEDIATE_OBSERVED:
+            case SmsCbConstants.MESSAGE_ID_CMAS_ALERT_EXTREME_IMMEDIATE_OBSERVED_LANGUAGE:
+            case SmsCbConstants.MESSAGE_ID_CMAS_ALERT_EXTREME_IMMEDIATE_LIKELY:
+            case SmsCbConstants.MESSAGE_ID_CMAS_ALERT_EXTREME_IMMEDIATE_LIKELY_LANGUAGE:
+                return SmsCbCmasInfo.CMAS_CLASS_EXTREME_THREAT;
+
+            case SmsCbConstants.MESSAGE_ID_CMAS_ALERT_EXTREME_EXPECTED_OBSERVED:
+            case SmsCbConstants.MESSAGE_ID_CMAS_ALERT_EXTREME_EXPECTED_OBSERVED_LANGUAGE:
+            case SmsCbConstants.MESSAGE_ID_CMAS_ALERT_EXTREME_EXPECTED_LIKELY:
+            case SmsCbConstants.MESSAGE_ID_CMAS_ALERT_EXTREME_EXPECTED_LIKELY_LANGUAGE:
+            case SmsCbConstants.MESSAGE_ID_CMAS_ALERT_SEVERE_IMMEDIATE_OBSERVED:
+            case SmsCbConstants.MESSAGE_ID_CMAS_ALERT_SEVERE_IMMEDIATE_OBSERVED_LANGUAGE:
+            case SmsCbConstants.MESSAGE_ID_CMAS_ALERT_SEVERE_IMMEDIATE_LIKELY:
+            case SmsCbConstants.MESSAGE_ID_CMAS_ALERT_SEVERE_IMMEDIATE_LIKELY_LANGUAGE:
+            case SmsCbConstants.MESSAGE_ID_CMAS_ALERT_SEVERE_EXPECTED_OBSERVED:
+            case SmsCbConstants.MESSAGE_ID_CMAS_ALERT_SEVERE_EXPECTED_OBSERVED_LANGUAGE:
+            case SmsCbConstants.MESSAGE_ID_CMAS_ALERT_SEVERE_EXPECTED_LIKELY:
+            case SmsCbConstants.MESSAGE_ID_CMAS_ALERT_SEVERE_EXPECTED_LIKELY_LANGUAGE:
+                return SmsCbCmasInfo.CMAS_CLASS_SEVERE_THREAT;
+
+            case SmsCbConstants.MESSAGE_ID_CMAS_ALERT_CHILD_ABDUCTION_EMERGENCY:
+            case SmsCbConstants.MESSAGE_ID_CMAS_ALERT_CHILD_ABDUCTION_EMERGENCY_LANGUAGE:
+                return SmsCbCmasInfo.CMAS_CLASS_CHILD_ABDUCTION_EMERGENCY;
+
+            case SmsCbConstants.MESSAGE_ID_CMAS_ALERT_REQUIRED_MONTHLY_TEST:
+            case SmsCbConstants.MESSAGE_ID_CMAS_ALERT_REQUIRED_MONTHLY_TEST_LANGUAGE:
+                return SmsCbCmasInfo.CMAS_CLASS_REQUIRED_MONTHLY_TEST;
+
+            case SmsCbConstants.MESSAGE_ID_CMAS_ALERT_EXERCISE:
+            case SmsCbConstants.MESSAGE_ID_CMAS_ALERT_EXERCISE_LANGUAGE:
+                return SmsCbCmasInfo.CMAS_CLASS_CMAS_EXERCISE;
+
+            case SmsCbConstants.MESSAGE_ID_CMAS_ALERT_OPERATOR_DEFINED_USE:
+            case SmsCbConstants.MESSAGE_ID_CMAS_ALERT_OPERATOR_DEFINED_USE_LANGUAGE:
+                return SmsCbCmasInfo.CMAS_CLASS_OPERATOR_DEFINED_USE;
+
+            default:
+                return SmsCbCmasInfo.CMAS_CLASS_UNKNOWN;
+        }
+    }
 }
diff --git a/tests/testapp/src/com/android/cellbroadcastreceiver/tests/SendTestBroadcastActivity.java b/tests/testapp/src/com/android/cellbroadcastreceiver/tests/SendTestBroadcastActivity.java
index 38c68a6..71484ad 100644
--- a/tests/testapp/src/com/android/cellbroadcastreceiver/tests/SendTestBroadcastActivity.java
+++ b/tests/testapp/src/com/android/cellbroadcastreceiver/tests/SendTestBroadcastActivity.java
@@ -38,6 +38,9 @@
     /** Whether to delay before sending test message. */
     private boolean mDelayBeforeSending;
 
+    /** Whether to send additional language alerts for GSM CMAS. */
+    private boolean mIsAdditionalLangAlert;
+
     /** Delay time before sending test message (when box is checked). */
     private static final int DELAY_BEFORE_SENDING_MSEC = 5000;
 
@@ -256,103 +259,124 @@
 
         /* Send a GSM CMAS presidential alert to app. */
         Button GsmCmasPresAlertButton = findViewById(R.id.button_gsm_cmas_pres_alert);
-        GsmCmasPresAlertButton.setOnClickListener(new OnClickListener() {
-            public void onClick(View v) {
-                if (mDelayBeforeSending && v != null) {
-                    Message msg = mDelayHandler.obtainMessage(0, this);
-                    mDelayHandler.sendMessageDelayed(msg, DELAY_BEFORE_SENDING_MSEC);
-                } else {
-                    SendGsmCmasMessages.testSendCmasPresAlert(SendTestBroadcastActivity.this,
-                            getSerialNumber());
-                }
-            }
-        });
+        GsmCmasPresAlertButton.setOnClickListener(
+                new OnClickListener() {
+                    public void onClick(View v) {
+                        if (mDelayBeforeSending && v != null) {
+                            Message msg = mDelayHandler.obtainMessage(0, this);
+                            mDelayHandler.sendMessageDelayed(msg, DELAY_BEFORE_SENDING_MSEC);
+                        } else {
+                            SendGsmCmasMessages.testSendCmasPresAlert(
+                                    SendTestBroadcastActivity.this,
+                                    getSerialNumber(),
+                                    mIsAdditionalLangAlert);
+                        }
+                    }
+                });
 
         /* Send a GSM CMAS extreme alert to app. */
         Button GsmCmasExtremeAlertButton = findViewById(R.id.button_gsm_cmas_extreme_alert);
-        GsmCmasExtremeAlertButton.setOnClickListener(new OnClickListener() {
-            public void onClick(View v) {
-                if (mDelayBeforeSending && v != null) {
-                    Message msg = mDelayHandler.obtainMessage(0, this);
-                    mDelayHandler.sendMessageDelayed(msg, DELAY_BEFORE_SENDING_MSEC);
-                } else {
-                    SendGsmCmasMessages.testSendCmasExtremeAlert(SendTestBroadcastActivity.this,
-                            getSerialNumber());
-                }
-            }
-        });
+        GsmCmasExtremeAlertButton.setOnClickListener(
+                new OnClickListener() {
+                    public void onClick(View v) {
+                        if (mDelayBeforeSending && v != null) {
+                            Message msg = mDelayHandler.obtainMessage(0, this);
+                            mDelayHandler.sendMessageDelayed(msg, DELAY_BEFORE_SENDING_MSEC);
+                        } else {
+                            SendGsmCmasMessages.testSendCmasExtremeAlert(
+                                    SendTestBroadcastActivity.this,
+                                    getSerialNumber(),
+                                    mIsAdditionalLangAlert);
+                        }
+                    }
+                });
 
         /* Send a GSM CMAS severe alert to app. */
         Button GsmCmasSevereAlertButton = findViewById(R.id.button_gsm_cmas_severe_alert);
-        GsmCmasSevereAlertButton.setOnClickListener(new OnClickListener() {
-            public void onClick(View v) {
-                if (mDelayBeforeSending && v != null) {
-                    Message msg = mDelayHandler.obtainMessage(0, this);
-                    mDelayHandler.sendMessageDelayed(msg, DELAY_BEFORE_SENDING_MSEC);
-                } else {
-                    SendGsmCmasMessages.testSendCmasSevereAlert(SendTestBroadcastActivity.this,
-                            getSerialNumber());
-                }
-            }
-        });
+        GsmCmasSevereAlertButton.setOnClickListener(
+                new OnClickListener() {
+                    public void onClick(View v) {
+                        if (mDelayBeforeSending && v != null) {
+                            Message msg = mDelayHandler.obtainMessage(0, this);
+                            mDelayHandler.sendMessageDelayed(msg, DELAY_BEFORE_SENDING_MSEC);
+                        } else {
+                            SendGsmCmasMessages.testSendCmasSevereAlert(
+                                    SendTestBroadcastActivity.this,
+                                    getSerialNumber(),
+                                    mIsAdditionalLangAlert);
+                        }
+                    }
+                });
 
         /* Send a GSM CMAS AMBER alert to app. */
         Button GsmCmasAmberAlertButton = findViewById(R.id.button_gsm_cmas_amber_alert);
-        GsmCmasAmberAlertButton.setOnClickListener(new OnClickListener() {
-            public void onClick(View v) {
-                if (mDelayBeforeSending && v != null) {
-                    Message msg = mDelayHandler.obtainMessage(0, this);
-                    mDelayHandler.sendMessageDelayed(msg, DELAY_BEFORE_SENDING_MSEC);
-                } else {
-                    SendGsmCmasMessages.testSendCmasAmberAlert(SendTestBroadcastActivity.this,
-                            getSerialNumber());
-                }
-            }
-        });
+        GsmCmasAmberAlertButton.setOnClickListener(
+                new OnClickListener() {
+                    public void onClick(View v) {
+                        if (mDelayBeforeSending && v != null) {
+                            Message msg = mDelayHandler.obtainMessage(0, this);
+                            mDelayHandler.sendMessageDelayed(msg, DELAY_BEFORE_SENDING_MSEC);
+                        } else {
+                            SendGsmCmasMessages.testSendCmasAmberAlert(
+                                    SendTestBroadcastActivity.this,
+                                    getSerialNumber(),
+                                    mIsAdditionalLangAlert);
+                        }
+                    }
+                });
 
         /* Send a GSM CMAS monthly test alert to app. */
         Button GsmCmasMonthlyTestButton = findViewById(R.id.button_gsm_cmas_monthly_test);
-        GsmCmasMonthlyTestButton.setOnClickListener(new OnClickListener() {
-            public void onClick(View v) {
-                if (mDelayBeforeSending && v != null) {
-                    Message msg = mDelayHandler.obtainMessage(0, this);
-                    mDelayHandler.sendMessageDelayed(msg, DELAY_BEFORE_SENDING_MSEC);
-                } else {
-                    SendGsmCmasMessages.testSendCmasMonthlyTest(SendTestBroadcastActivity.this,
-                            getSerialNumber());
-                }
-            }
-        });
+        GsmCmasMonthlyTestButton.setOnClickListener(
+                new OnClickListener() {
+                    public void onClick(View v) {
+                        if (mDelayBeforeSending && v != null) {
+                            Message msg = mDelayHandler.obtainMessage(0, this);
+                            mDelayHandler.sendMessageDelayed(msg, DELAY_BEFORE_SENDING_MSEC);
+                        } else {
+                            SendGsmCmasMessages.testSendCmasMonthlyTest(
+                                    SendTestBroadcastActivity.this,
+                                    getSerialNumber(),
+                                    mIsAdditionalLangAlert);
+                        }
+                    }
+                });
 
         /* Send a GSM public safety messages to app. */
         Button GsmPublicSafetyMessagesAlertTestButton = findViewById(
                 R.id.button_gsm_public_safety_message);
-        GsmPublicSafetyMessagesAlertTestButton.setOnClickListener(new OnClickListener() {
-            public void onClick(View v) {
-                if (mDelayBeforeSending && v != null) {
-                    Message msg = mDelayHandler.obtainMessage(0, this);
-                    mDelayHandler.sendMessageDelayed(msg, DELAY_BEFORE_SENDING_MSEC);
-                } else {
-                    SendGsmCmasMessages.testSendPublicSafetyMessagesAlert(
-                            SendTestBroadcastActivity.this, getSerialNumber());
-                }
-            }
-        });
+        GsmPublicSafetyMessagesAlertTestButton.setOnClickListener(
+                new OnClickListener() {
+                    public void onClick(View v) {
+                        if (mDelayBeforeSending && v != null) {
+                            Message msg = mDelayHandler.obtainMessage(0, this);
+                            mDelayHandler.sendMessageDelayed(msg, DELAY_BEFORE_SENDING_MSEC);
+                        } else {
+                            SendGsmCmasMessages.testSendPublicSafetyMessagesAlert(
+                                    SendTestBroadcastActivity.this,
+                                    getSerialNumber(),
+                                    mIsAdditionalLangAlert);
+                        }
+                    }
+                });
 
         /* Send a GSM state/local test alert to app. */
         Button GsmStateLocalTestAlertButton = findViewById(
                 R.id.button_gsm_state_local_test_alert);
-        GsmStateLocalTestAlertButton.setOnClickListener(new OnClickListener() {
-            public void onClick(View v) {
-                if (mDelayBeforeSending && v != null) {
-                    Message msg = mDelayHandler.obtainMessage(0, this);
-                    mDelayHandler.sendMessageDelayed(msg, DELAY_BEFORE_SENDING_MSEC);
-                } else {
-                    SendGsmCmasMessages.testSendStateLocalTestAlert(
-                            SendTestBroadcastActivity.this, getSerialNumber());
-                }
-            }
-        });
+        GsmStateLocalTestAlertButton.setOnClickListener(
+                new OnClickListener() {
+                    public void onClick(View v) {
+                        if (mDelayBeforeSending && v != null) {
+                            Message msg = mDelayHandler.obtainMessage(0, this);
+                            mDelayHandler.sendMessageDelayed(msg, DELAY_BEFORE_SENDING_MSEC);
+                        } else {
+                            SendGsmCmasMessages.testSendStateLocalTestAlert(
+                                    SendTestBroadcastActivity.this,
+                                    getSerialNumber(),
+                                    mIsAdditionalLangAlert);
+                        }
+                    }
+                });
 
         /* Send a GSM 7-bit broadcast message to app. */
         Button gsm7bitTypeButton = (Button) findViewById(R.id.button_gsm_7bit_type);
@@ -566,5 +590,15 @@
                 mDelayBeforeSending = delayCheckbox.isChecked();
             }
         });
+
+        /* Update boolean to set channel for addtional language alerts when box is checked. */
+        final CheckBox additionalLangCheckbox =
+                (CheckBox) findViewById(R.id.button_additional_lang_broadcast);
+        additionalLangCheckbox.setOnClickListener(
+                new OnClickListener() {
+                    public void onClick(View v) {
+                        mIsAdditionalLangAlert = additionalLangCheckbox.isChecked();
+                    }
+                });
     }
 }