Merge "Update the uid correctly."
diff --git a/core/java/android/app/AlarmManager.java b/core/java/android/app/AlarmManager.java
index af7a912..b0afe7c 100644
--- a/core/java/android/app/AlarmManager.java
+++ b/core/java/android/app/AlarmManager.java
@@ -104,8 +104,9 @@
* Alarm time in {@link System#currentTimeMillis System.currentTimeMillis()}
* (wall clock time in UTC), which will wake up the device when
* it goes off. And it will power on the devices when it shuts down.
+ * Set as 5 to make it be compatible with android_alarm_type.
*/
- public static final int RTC_POWEROFF_WAKEUP = 4;
+ public static final int RTC_POWEROFF_WAKEUP = 5;
/**
* Broadcast Action: Sent after the value returned by
diff --git a/core/java/android/nfc/INfcAdapter.aidl b/core/java/android/nfc/INfcAdapter.aidl
index 961a3f4..0107d93 100644
--- a/core/java/android/nfc/INfcAdapter.aidl
+++ b/core/java/android/nfc/INfcAdapter.aidl
@@ -1,4 +1,7 @@
/*
+ * Copyright (c) 2015, The Linux Foundation. All rights reserved.
+ * Not a Contribution.
+ *
* Copyright (C) 2010 The Android Open Source Project
*
* Licensed under the Apache License, Version 2.0 (the "License");
@@ -28,6 +31,7 @@
import android.nfc.INfcCardEmulation;
import android.nfc.INfcUnlockHandler;
import android.os.Bundle;
+import android.os.IBinder;
/**
* @hide
@@ -37,6 +41,7 @@
INfcTag getNfcTagInterface();
INfcCardEmulation getNfcCardEmulationInterface();
INfcAdapterExtras getNfcAdapterExtrasInterface(in String pkg);
+ IBinder getNfcAdapterVendorInterface(in String vendor);
int getState();
boolean disable(boolean saveState);
diff --git a/core/java/android/nfc/cardemulation/AidGroup.java b/core/java/android/nfc/cardemulation/AidGroup.java
index 4407c9d..fcbf6ee 100644
--- a/core/java/android/nfc/cardemulation/AidGroup.java
+++ b/core/java/android/nfc/cardemulation/AidGroup.java
@@ -1,3 +1,22 @@
+/*
+ * Copyright (c) 2015, The Linux Foundation. All rights reserved.
+ * Not a Contribution.
+ *
+ * Copyright (C) 2014 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
package android.nfc.cardemulation;
import java.io.IOException;
@@ -21,7 +40,7 @@
*
* @hide
*/
-public final class AidGroup implements Parcelable {
+public class AidGroup implements Parcelable {
/**
* The maximum number of AIDs that can be present in any one group.
*/
@@ -29,9 +48,9 @@
static final String TAG = "AidGroup";
- final List<String> aids;
- final String category;
- final String description;
+ protected List<String> aids;
+ protected String category;
+ protected String description;
/**
* Creates a new AidGroup object.
diff --git a/core/java/android/nfc/tech/MifareClassic.java b/core/java/android/nfc/tech/MifareClassic.java
index 8c92288..302c02d 100644
--- a/core/java/android/nfc/tech/MifareClassic.java
+++ b/core/java/android/nfc/tech/MifareClassic.java
@@ -1,4 +1,6 @@
/*
+ * Copyright (C) 2015 NXP Semiconductors
+ * The original Work has been changed by NXP Semiconductors.
* Copyright (C) 2010 The Android Open Source Project
*
* Licensed under the Apache License, Version 2.0 (the "License");
@@ -173,6 +175,10 @@
mType = TYPE_CLASSIC;
mSize = SIZE_4K;
break;
+ case 0x19:
+ mType = TYPE_CLASSIC;
+ mSize = SIZE_2K;
+ break;
case 0x28:
mType = TYPE_CLASSIC;
mSize = SIZE_1K;
diff --git a/core/java/android/nfc/tech/NfcA.java b/core/java/android/nfc/tech/NfcA.java
index 88730f9..b7fa455 100644
--- a/core/java/android/nfc/tech/NfcA.java
+++ b/core/java/android/nfc/tech/NfcA.java
@@ -1,4 +1,6 @@
/*
+ * Copyright (C) 2015 NXP Semiconductors
+ * The original Work has been changed by NXP Semiconductors.
* Copyright (C) 2010 The Android Open Source Project
*
* Licensed under the Apache License, Version 2.0 (the "License");
@@ -66,8 +68,15 @@
/** @hide */
public NfcA(Tag tag) throws RemoteException {
super(tag, TagTechnology.NFC_A);
- Bundle extras = tag.getTechExtras(TagTechnology.NFC_A);
- mSak = extras.getShort(EXTRA_SAK);
+ Bundle extras;
+ mSak = 0;
+ if(tag.hasTech(TagTechnology.MIFARE_CLASSIC))
+ {
+ extras = tag.getTechExtras(TagTechnology.MIFARE_CLASSIC);
+ mSak = extras.getShort(EXTRA_SAK);
+ }
+ extras = tag.getTechExtras(TagTechnology.NFC_A);
+ mSak |= extras.getShort(EXTRA_SAK);
mAtqa = extras.getByteArray(EXTRA_ATQA);
}
diff --git a/core/java/android/provider/Settings.java b/core/java/android/provider/Settings.java
index a10db45..817358d 100644
--- a/core/java/android/provider/Settings.java
+++ b/core/java/android/provider/Settings.java
@@ -2744,6 +2744,15 @@
private static final Validator TEXT_AUTO_CAPS_VALIDATOR = sBooleanValidator;
/**
+ * Setting to show if system is in power off alarm mode. 1 = true, 0 = false
+ * @hide
+ */
+ public static final String POWER_OFF_ALARM_MODE = "power_off_alarm_mode";
+
+ /** Validator for POWER_OFF_ALARM_MODE */
+ private static final Validator POWER_OFF_ALARM_MODE_VALIDATOR = sBooleanValidator;
+
+ /**
* Setting to enable Auto Punctuate in text editors. 1 = On, 0 = Off. This
* feature converts two spaces to a "." and space.
*/
@@ -3355,6 +3364,7 @@
PUBLIC_SETTINGS.add(SOUND_EFFECTS_ENABLED);
PUBLIC_SETTINGS.add(HAPTIC_FEEDBACK_ENABLED);
PUBLIC_SETTINGS.add(SHOW_WEB_SUGGESTIONS);
+ PUBLIC_SETTINGS.add(POWER_OFF_ALARM_MODE);
}
/**
@@ -3480,6 +3490,7 @@
VALIDATORS.put(WIFI_STATIC_NETMASK, WIFI_STATIC_NETMASK_VALIDATOR);
VALIDATORS.put(WIFI_STATIC_DNS1, WIFI_STATIC_DNS1_VALIDATOR);
VALIDATORS.put(WIFI_STATIC_DNS2, WIFI_STATIC_DNS2_VALIDATOR);
+ VALIDATORS.put(POWER_OFF_ALARM_MODE, POWER_OFF_ALARM_MODE_VALIDATOR);
}
/**
diff --git a/packages/SystemUI/res/layout/keyguard_bottom_area.xml b/packages/SystemUI/res/layout/keyguard_bottom_area.xml
index 444f0f0..de73538 100644
--- a/packages/SystemUI/res/layout/keyguard_bottom_area.xml
+++ b/packages/SystemUI/res/layout/keyguard_bottom_area.xml
@@ -36,6 +36,15 @@
android:textAppearance="?android:attr/textAppearanceSmall"
android:accessibilityLiveRegion="polite" />
+ <include layout="@layout/keyguard_eca"
+ android:id="@+id/keyguard_selector_fade_container"
+ android:layout_width="wrap_content"
+ android:layout_height="wrap_content"
+ android:layout_marginBottom="36dp"
+ android:orientation="vertical"
+ android:layout_gravity="bottom|center_horizontal"
+ android:gravity="center_horizontal" />
+
<FrameLayout
android:id="@+id/preview_container"
android:layout_width="match_parent"
diff --git a/packages/SystemUI/res/layout/mobile_signal_group.xml b/packages/SystemUI/res/layout/mobile_signal_group.xml
index 6ae5cf3..3d25f9f 100644
--- a/packages/SystemUI/res/layout/mobile_signal_group.xml
+++ b/packages/SystemUI/res/layout/mobile_signal_group.xml
@@ -1,5 +1,9 @@
<?xml version="1.0" encoding="utf-8"?>
<!--
+/*
+ * Copyright (c) 2015 The Linux Foundation. All rights reserved.
+ * Not a Contribution.
+*/
/* apps/common/assets/default/default/skins/StatusBar.xml
**
** Copyright 2011, The Android Open Source Project
@@ -17,31 +21,73 @@
** limitations under the License.
*/
-->
-<FrameLayout
+<LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:systemui="http://schemas.android.com/apk/res-auto"
android:id="@+id/mobile_combo"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
>
- <com.android.systemui.statusbar.AnimatedImageView
- android:theme="@style/DualToneLightTheme"
- android:id="@+id/mobile_signal"
- android:layout_height="wrap_content"
- android:layout_width="wrap_content"
- systemui:hasOverlappingRendering="false"
- />
- <com.android.systemui.statusbar.AnimatedImageView
- android:theme="@style/DualToneDarkTheme"
- android:id="@+id/mobile_signal_dark"
- android:layout_height="wrap_content"
- android:layout_width="wrap_content"
- android:alpha="0.0"
- systemui:hasOverlappingRendering="false"
- />
<ImageView
- android:id="@+id/mobile_type"
- android:layout_height="wrap_content"
android:layout_width="wrap_content"
+ android:layout_height="wrap_content"
+ android:layout_marginStart="2dp"
+ android:id="@+id/data_inout"
+ android:visibility="gone"
/>
-</FrameLayout>
+ <FrameLayout
+ android:layout_width="wrap_content"
+ android:layout_height="wrap_content"
+ >
+ <FrameLayout
+ android:id="@+id/mobile_signal_single"
+ android:layout_width="wrap_content"
+ android:layout_height="wrap_content"
+ >
+ <com.android.systemui.statusbar.AnimatedImageView
+ android:theme="@style/DualToneLightTheme"
+ android:id="@+id/mobile_signal"
+ android:layout_height="wrap_content"
+ android:layout_width="wrap_content"
+ systemui:hasOverlappingRendering="false"
+ />
+ <com.android.systemui.statusbar.AnimatedImageView
+ android:theme="@style/DualToneDarkTheme"
+ android:id="@+id/mobile_signal_dark"
+ android:layout_height="wrap_content"
+ android:layout_width="wrap_content"
+ android:alpha="0.0"
+ systemui:hasOverlappingRendering="false"
+ />
+ <ImageView
+ android:id="@+id/mobile_type"
+ android:layout_height="wrap_content"
+ android:layout_width="wrap_content"
+ />
+ <ImageView
+ android:id="@+id/mobile_inout"
+ android:layout_height="17dp"
+ android:layout_width="17dp"
+ android:layout_gravity="end|bottom"
+ />
+ </FrameLayout>
+ <LinearLayout
+ android:id="@+id/mobile_signal_stacked"
+ android:layout_width="wrap_content"
+ android:layout_height="wrap_content"
+ android:orientation="vertical"
+ android:visibility="gone"
+ >
+ <ImageView
+ android:id="@+id/mobile_signal_data"
+ android:layout_width="wrap_content"
+ android:layout_height="wrap_content"
+ />
+ <ImageView
+ android:id="@+id/mobile_signal_voice"
+ android:layout_width="wrap_content"
+ android:layout_height="wrap_content"
+ />
+ </LinearLayout>
+ </FrameLayout>
+</LinearLayout>
diff --git a/packages/SystemUI/res/layout/signal_cluster_view.xml b/packages/SystemUI/res/layout/signal_cluster_view.xml
index f8bd6fd..621a739 100644
--- a/packages/SystemUI/res/layout/signal_cluster_view.xml
+++ b/packages/SystemUI/res/layout/signal_cluster_view.xml
@@ -75,6 +75,14 @@
android:alpha="0.0"
systemui:hasOverlappingRendering="false"
/>
+ <com.android.systemui.statusbar.AlphaOptimizedImageView
+ android:theme="@style/DualToneLightTheme"
+ android:id="@+id/wifi_inout"
+ android:layout_height="17dp"
+ android:layout_width="18.41dp"
+ android:layout_gravity="center|bottom"
+ systemui:hasOverlappingRendering="false"
+ />
</FrameLayout>
<View
android:id="@+id/wifi_signal_spacer"
diff --git a/packages/SystemUI/res/layout/status_bar.xml b/packages/SystemUI/res/layout/status_bar.xml
index a5b3a83..ea3f8b7 100644
--- a/packages/SystemUI/res/layout/status_bar.xml
+++ b/packages/SystemUI/res/layout/status_bar.xml
@@ -75,6 +75,20 @@
android:gravity="center_vertical"
android:orientation="horizontal"/>
</com.android.keyguard.AlphaOptimizedLinearLayout>
+
+ <com.android.keyguard.CarrierText
+ android:id="@+id/status_carrier_text"
+ android:layout_width="match_parent"
+ android:layout_height="@dimen/match_parent"
+ android:layout_marginStart="@dimen/keyguard_carrier_text_margin"
+ android:layout_toStartOf="@id/notification_icon_area_inner"
+ android:gravity="center_vertical"
+ android:ellipsize="marquee"
+ android:textAppearance="?android:attr/textAppearanceSmall"
+ android:textColor="#ffffff"
+ android:singleLine="true"
+ android:visibility="gone"/>
+
</com.android.systemui.statusbar.AlphaOptimizedFrameLayout>
<com.android.keyguard.AlphaOptimizedLinearLayout android:id="@+id/system_icon_area"
diff --git a/packages/SystemUI/res/layout/status_bar_expanded.xml b/packages/SystemUI/res/layout/status_bar_expanded.xml
index f7bbce0..148212e 100644
--- a/packages/SystemUI/res/layout/status_bar_expanded.xml
+++ b/packages/SystemUI/res/layout/status_bar_expanded.xml
@@ -20,6 +20,7 @@
<com.android.systemui.statusbar.phone.NotificationPanelView
xmlns:android="http://schemas.android.com/apk/res/android"
+ xmlns:androidprv="http://schemas.android.com/apk/res-auto"
xmlns:systemui="http://schemas.android.com/apk/res/com.android.systemui"
android:id="@+id/notification_panel"
android:layout_width="match_parent"
@@ -27,6 +28,19 @@
android:background="@android:color/transparent"
>
+ <com.android.keyguard.CarrierText
+ android:id="@+id/carrier_label"
+ android:layout_height="@dimen/carrier_label_height"
+ android:layout_width="match_parent"
+ android:layout_marginBottom="@dimen/close_handle_height"
+ android:layout_gravity="bottom"
+ android:gravity="center"
+ android:ellipsize="marquee"
+ android:singleLine="true"
+ android:visibility="invisible"
+ android:textAppearance="?android:attr/textAppearanceSmall"
+ android:textColor="#999999" />
+
<include
layout="@layout/keyguard_status_view"
android:layout_height="wrap_content"
diff --git a/packages/SystemUI/res/values-zh-rCN/strings.xml b/packages/SystemUI/res/values-zh-rCN/strings.xml
index 84e0eea..5637222 100644
--- a/packages/SystemUI/res/values-zh-rCN/strings.xml
+++ b/packages/SystemUI/res/values-zh-rCN/strings.xml
@@ -142,7 +142,7 @@
<string name="accessibility_data_connection_4g" msgid="7741000750630089612">"4G"</string>
<string name="accessibility_data_connection_lte" msgid="5413468808637540658">"LTE"</string>
<string name="accessibility_data_connection_cdma" msgid="6132648193978823023">"CDMA"</string>
- <string name="accessibility_data_connection_roaming" msgid="5977362333466556094">"漫游中"</string>
+ <string name="accessibility_data_connection_roaming" msgid="5977362333466556094">"数据漫游"</string>
<string name="accessibility_data_connection_edge" msgid="4477457051631979278">"EDGE"</string>
<string name="accessibility_data_connection_wifi" msgid="2324496756590645221">"WLAN"</string>
<string name="accessibility_no_sim" msgid="8274017118472455155">"无 SIM 卡。"</string>
diff --git a/packages/SystemUI/res/values-zh-rTW/strings.xml b/packages/SystemUI/res/values-zh-rTW/strings.xml
index e0464b7..b39c088 100644
--- a/packages/SystemUI/res/values-zh-rTW/strings.xml
+++ b/packages/SystemUI/res/values-zh-rTW/strings.xml
@@ -142,7 +142,7 @@
<string name="accessibility_data_connection_4g" msgid="7741000750630089612">"4G"</string>
<string name="accessibility_data_connection_lte" msgid="5413468808637540658">"LTE"</string>
<string name="accessibility_data_connection_cdma" msgid="6132648193978823023">"CDMA"</string>
- <string name="accessibility_data_connection_roaming" msgid="5977362333466556094">"漫遊中"</string>
+ <string name="accessibility_data_connection_roaming" msgid="5977362333466556094">"數據漫遊"</string>
<string name="accessibility_data_connection_edge" msgid="4477457051631979278">"Edge"</string>
<string name="accessibility_data_connection_wifi" msgid="2324496756590645221">"Wi-Fi"</string>
<string name="accessibility_no_sim" msgid="8274017118472455155">"沒有 SIM 卡。"</string>
diff --git a/packages/SystemUI/res/values/arrays.xml b/packages/SystemUI/res/values/arrays.xml
index 6102aa6..a0a3397 100644
--- a/packages/SystemUI/res/values/arrays.xml
+++ b/packages/SystemUI/res/values/arrays.xml
@@ -1,5 +1,8 @@
<?xml version="1.0" encoding="utf-8"?>
<!--
+/*
+ * Copyright (c) 2014, 2015 The Linux Foundation. All rights reserved.
+ * Not a Contribution.
/* //device/apps/common/assets/res/any/colors.xml
**
** Copyright 2012, The Android Open Source Project
@@ -37,4 +40,1092 @@
<item>157</item><item>334</item>
<item>0</item> <item>334</item>
</array>
+
+ <!-- added for customized status bar -->
+ <!--data type-->
+ <!--Add three items to support TSTS-->
+ <string-array name="multi_data_type">
+ <item>array/telephony_data_type_sim1</item>
+ <item>array/telephony_data_type_sim1</item>
+ <item>array/telephony_data_type_sim1</item>
+ </string-array>
+
+ <string-array name="telephony_data_type_sim1">
+ <!--NETWORK_TYPE_UNKNOWN-->
+ <item>0</item>
+ <!--NETWORK_TYPE_GPRS-->
+ <item>drawable/stat_sys_data_fully_connected_g</item>
+ <!--NETWORK_TYPE_EDGE-->
+ <item>drawable/stat_sys_data_fully_connected_e</item>
+ <!--NETWORK_TYPE_UMTS-->
+ <item>drawable/stat_sys_data_fully_connected_3g</item>
+ <!--NETWORK_TYPE_CDMA-->
+ <item>drawable/stat_sys_data_fully_connected_1x</item>
+ <!--NETWORK_TYPE_EVDO_0-->
+ <item>drawable/stat_sys_data_fully_connected_3g</item>
+ <!--NETWORK_TYPE_EVDO_A-->
+ <item>drawable/stat_sys_data_fully_connected_3g</item>
+ <!--NETWORK_TYPE_1xRTT-->
+ <item>drawable/stat_sys_data_fully_connected_1x</item>
+ <!--NETWORK_TYPE_HSDPA-->
+ <item>drawable/stat_sys_data_fully_connected_h</item>
+ <!--NETWORK_TYPE_HSUPA-->
+ <item>drawable/stat_sys_data_fully_connected_h</item>
+ <!--NETWORK_TYPE_HSPA-->
+ <item>drawable/stat_sys_data_fully_connected_h</item>
+ <!--NETWORK_TYPE_IDEN-->
+ <item>0</item>
+ <!--NETWORK_TYPE_EVDO_B-->
+ <item>drawable/stat_sys_data_fully_connected_3g</item>
+ <!--NETWORK_TYPE_LTE-->
+ <item>drawable/stat_sys_data_fully_connected_3g</item>
+ <!--NETWORK_TYPE_EHRPD-->
+ <item>drawable/stat_sys_data_fully_connected_3g</item>
+ <!--NETWORK_TYPE_HSPAP-->
+ <item>drawable/stat_sys_data_fully_connected_3g</item>
+ <!--NETWORK_TYPE_GSM-->
+ <item>drawable/stat_sys_data_fully_connected_g</item>
+ <!--NETWORK_TYPE_TD_SCDMA-->
+ <item>drawable/stat_sys_data_fully_connected_3g</item>
+ <!--NETWORK_TYPE_IWLAN-->
+ <item>0</item>
+ </string-array>
+
+ <!--reserved for overlay-->
+ <string-array name="telephony_data_type_sim2">
+ </string-array>
+
+ <!--reserved for overlay-->
+ <string-array name="telephony_data_type_sim3">
+ </string-array>
+
+ <string-array name="telephony_data_type_generation">
+ <!--3G-->
+ <item>drawable/stat_sys_data_fully_connected_3g</item>
+ <!--4G-->
+ <item>drawable/stat_sys_data_fully_connected_4g</item>
+ <!--4G+-->
+ <item>drawable/stat_sys_data_fully_connected_4g_plus</item>
+ </string-array>
+
+ <!--data type description-->
+ <string-array name="telephony_data_type_description">
+ <!--NETWORK_TYPE_UNKNOWN-->
+ <item>0</item>
+ <!--NETWORK_TYPE_GPRS-->
+ <item>string/accessibility_data_connection_gprs</item>
+ <!--NETWORK_TYPE_EDGE-->
+ <item>string/accessibility_data_connection_edge</item>
+ <!--NETWORK_TYPE_UMTS-->
+ <item>string/accessibility_data_connection_3g</item>
+ <!--NETWORK_TYPE_CDMA-->
+ <item>string/accessibility_data_connection_cdma</item>
+ <!--NETWORK_TYPE_EVDO_0-->
+ <item>string/accessibility_data_connection_3g</item>
+ <!--NETWORK_TYPE_EVDO_A-->
+ <item>string/accessibility_data_connection_3g</item>
+ <!--NETWORK_TYPE_1xRTT-->
+ <item>string/accessibility_data_connection_cdma</item>
+ <!--NETWORK_TYPE_HSDPA-->
+ <item>string/accessibility_data_connection_3.5g</item>
+ <!--NETWORK_TYPE_HSUPA-->
+ <item>string/accessibility_data_connection_3.5g</item>
+ <!--NETWORK_TYPE_HSPA-->
+ <item>string/accessibility_data_connection_3.5g</item>
+ <!--NETWORK_TYPE_IDEN-->
+ <item>0</item>
+ <!--NETWORK_TYPE_EVDO_B-->
+ <item>string/accessibility_data_connection_3g</item>
+ <!--NETWORK_TYPE_LTE-->
+ <item>string/accessibility_data_connection_lte</item>
+ <!--NETWORK_TYPE_EHRPD-->
+ <item>string/accessibility_data_connection_3g</item>
+ <!--NETWORK_TYPE_HSPAP-->
+ <item>string/accessibility_data_connection_3.5g</item>
+ <!--NETWORK_TYPE_GSM-->
+ <item>string/accessibility_data_connection_gprs</item>
+ <!--NETWORK_TYPE_TD_SCDMA-->
+ <item>string/accessibility_data_connection_3g</item>
+ <!--NETWORK_TYPE_IWLAN-->
+ <item>0</item>
+ </string-array>
+
+ <string-array name="telephony_data_type_generation_description">
+ <!--3G-->
+ <item>string/accessibility_data_connection_3g</item>
+ <!--4G-->
+ <item>string/accessibility_data_connection_4g</item>
+ </string-array>
+
+ <!--data activity-->
+ <!--Add three items to support TSTS-->
+ <string-array name="multi_data_activity">
+ <item>array/data_activity_sim1</item>
+ <item>array/data_activity_sim1</item>
+ <item>array/data_activity_sim1</item>
+ </string-array>
+
+ <string-array name="data_activity_sim1">
+ <item>array/telephony_data_activity_unknown_sim1</item>
+ <item>array/telephony_data_activity_g_sim1</item>
+ <item>array/telephony_data_activity_e_sim1</item>
+ <item>array/telephony_data_activity_2g_sim1</item>
+ <item>array/telephony_data_activity_3g_sim1</item>
+ <item>array/telephony_data_activity_4g_sim1</item>
+ <item>array/telephony_data_activity_h_sim1</item>
+ <item>array/telephony_data_activity_hp_sim1</item>
+ <item>array/telephony_data_activity_1x_sim1</item>
+ <item>array/telephony_data_activity_lte_sim1</item>
+ </string-array>
+
+ <!--reserved for overlay-->
+ <string-array name="data_activity_sim2">
+ </string-array>
+ <!--reserved for overlay-->
+ <string-array name="data_activity_sim3">
+ </string-array>
+
+ <string-array name="telephony_data_activity_unknown_sim1">
+ <item>0</item><!--none-->
+ <item>0</item><!--in-->
+ <item>0</item><!--out-->
+ <item>0</item><!--inout-->
+ <item>0</item><!--dormant-->
+ </string-array>
+
+ <!--reserved for overlay-->
+ <string-array name="telephony_data_activity_unknown_sim2">
+ </string-array>
+ <!--reserved for overlay-->
+ <string-array name="telephony_data_activity_unknown_sim3">
+ </string-array>
+
+ <string-array name="telephony_data_activity_g_sim1">
+ <item>0</item>
+ <item>drawable/stat_sys_signal_in_auto_mirrored</item>
+ <item>drawable/stat_sys_signal_out_auto_mirrored</item>
+ <item>drawable/stat_sys_signal_inout_auto_mirrored</item>
+ <item>0</item>
+ </string-array>
+
+ <!--reserved for overlay-->
+ <string-array name="telephony_data_activity_g_sim2">
+ </string-array>
+ <!--reserved for overlay-->
+ <string-array name="telephony_data_activity_g_sim3">
+ </string-array>
+
+ <string-array name="telephony_data_activity_e_sim1">
+ <item>0</item>
+ <item>drawable/stat_sys_signal_in_auto_mirrored</item>
+ <item>drawable/stat_sys_signal_out_auto_mirrored</item>
+ <item>drawable/stat_sys_signal_inout_auto_mirrored</item>
+ <item>0</item>
+ </string-array>
+
+ <!--reserved for overlay-->
+ <string-array name="telephony_data_activity_e_sim2">
+ </string-array>
+ <!--reserved for overlay-->
+ <string-array name="telephony_data_activity_e_sim3">
+ </string-array>
+
+ <string-array name="telephony_data_activity_2g_sim1">
+ <item>0</item>
+ <item>drawable/stat_sys_signal_in_auto_mirrored</item>
+ <item>drawable/stat_sys_signal_out_auto_mirrored</item>
+ <item>drawable/stat_sys_signal_inout_auto_mirrored</item>
+ <item>0</item>
+ </string-array>
+
+ <!--reserved for overlay-->
+ <string-array name="telephony_data_activity_2g_sim2">
+ </string-array>
+ <!--reserved for overlay-->
+ <string-array name="telephony_data_activity_2g_sim3">
+ </string-array>
+
+ <string-array name="telephony_data_activity_3g_sim1">
+ <item>0</item>
+ <item>drawable/stat_sys_signal_in_auto_mirrored</item>
+ <item>drawable/stat_sys_signal_out_auto_mirrored</item>
+ <item>drawable/stat_sys_signal_inout_auto_mirrored</item>
+ <item>0</item>
+ </string-array>
+
+ <!--reserved for overlay-->
+ <string-array name="telephony_data_activity_3g_sim2">
+ </string-array>
+ <!--reserved for overlay-->
+ <string-array name="telephony_data_activity_3g_sim3">
+ </string-array>
+
+ <string-array name="telephony_data_activity_4g_sim1">
+ <item>0</item>
+ <item>drawable/stat_sys_signal_in_auto_mirrored</item>
+ <item>drawable/stat_sys_signal_out_auto_mirrored</item>
+ <item>drawable/stat_sys_signal_inout_auto_mirrored</item>
+ <item>0</item>
+ </string-array>
+
+ <!--reserved for overlay-->
+ <string-array name="telephony_data_activity_4g_sim2">
+ </string-array>
+ <!--reserved for overlay-->
+ <string-array name="telephony_data_activity_4g_sim3">
+ </string-array>
+
+ <string-array name="telephony_data_activity_h_sim1">
+ <item>0</item>
+ <item>drawable/stat_sys_signal_in_auto_mirrored</item>
+ <item>drawable/stat_sys_signal_out_auto_mirrored</item>
+ <item>drawable/stat_sys_signal_inout_auto_mirrored</item>
+ <item>0</item>
+ </string-array>
+
+ <!--reserved for overlay-->
+ <string-array name="telephony_data_activity_h_sim2">
+ </string-array>
+ <!--reserved for overlay-->
+ <string-array name="telephony_data_activity_h_sim3">
+ </string-array>
+
+ <string-array name="telephony_data_activity_hp_sim1">
+ <item>0</item>
+ <item>drawable/stat_sys_signal_in_auto_mirrored</item>
+ <item>drawable/stat_sys_signal_out_auto_mirrored</item>
+ <item>drawable/stat_sys_signal_inout_auto_mirrored</item>
+ <item>0</item>
+ </string-array>
+
+ <!--reserved for overlay-->
+ <string-array name="telephony_data_activity_hp_sim2">
+ </string-array>
+ <!--reserved for overlay-->
+ <string-array name="telephony_data_activity_hp_sim3">
+ </string-array>
+
+ <string-array name="telephony_data_activity_1x_sim1">
+ <item>0</item>
+ <item>drawable/stat_sys_signal_in_auto_mirrored</item>
+ <item>drawable/stat_sys_signal_out_auto_mirrored</item>
+ <item>drawable/stat_sys_signal_inout_auto_mirrored</item>
+ <item>0</item>
+ </string-array>
+
+ <!--reserved for overlay-->
+ <string-array name="telephony_data_activity_1x_sim2">
+ </string-array>
+ <!--reserved for overlay-->
+ <string-array name="telephony_data_activity_1x_sim3">
+ </string-array>
+
+ <string-array name="telephony_data_activity_lte_sim1">
+ <item>0</item>
+ <item>drawable/stat_sys_signal_in_auto_mirrored</item>
+ <item>drawable/stat_sys_signal_out_auto_mirrored</item>
+ <item>drawable/stat_sys_signal_inout_auto_mirrored</item>
+ <item>0</item>
+ </string-array>
+
+ <!--reserved for overlay-->
+ <string-array name="telephony_data_activity_lte_sim2">
+ </string-array>
+ <!--reserved for overlay-->
+ <string-array name="telephony_data_activity_lte_sim3">
+ </string-array>
+
+ <!--signal strength-->
+ <!--Add three items to support TSTS-->
+ <string-array name="multi_signal_strength">
+ <item>array/telephony_siganl_strength_sim1</item>
+ <item>array/telephony_siganl_strength_sim1</item>
+ <item>array/telephony_siganl_strength_sim1</item>
+ </string-array>
+
+ <!--Add three items to support TSTS-->
+ <string-array name="multi_signal_strength_roaming">
+ <item>array/telephony_siganl_strength_roaming_sim1</item>
+ <item>array/telephony_siganl_strength_roaming_sim1</item>
+ <item>array/telephony_siganl_strength_roaming_sim1</item>
+ </string-array>
+
+ <string-array name="telephony_siganl_strength_sim1">
+ <item>array/telephony_signal_strength_g_sim1</item>
+ <item>array/telephony_signal_strength_e_sim1</item>
+ <item>array/telephony_signal_strength_3g_sim1</item>
+ <item>array/telephony_signal_strength_4g_sim1</item>
+ <item>array/telephony_signal_strength_h_sim1</item>
+ <item>array/telephony_signal_strength_hp_sim1</item>
+ <item>array/telephony_signal_strength_1x_sim1</item>
+ <item>array/telephony_signal_strength_cdma_sim1</item>
+ <item>array/telephony_signal_strength_umts_sim1</item>
+ </string-array>
+
+ <!--reserved for overlay-->
+ <string-array name="telephony_siganl_strength_sim2">
+ </string-array>
+ <string-array name="telephony_siganl_strength_sim3">
+ </string-array>
+
+ <string-array name="telephony_siganl_strength_roaming_sim1">
+ <item>array/telephony_signal_strength_g_roaming_sim1</item>
+ <item>array/telephony_signal_strength_e_roaming_sim1</item>
+ <item>array/telephony_signal_strength_3g_roaming_sim1</item>
+ <item>array/telephony_signal_strength_4g_roaming_sim1</item>
+ <item>array/telephony_signal_strength_h_roaming_sim1</item>
+ <item>array/telephony_signal_strength_hp_roaming_sim1</item>
+ <item>array/telephony_signal_strength_1x_roaming_sim1</item>
+ <item>array/telephony_signal_strength_cdma_roaming_sim1</item>
+ <item>array/telephony_signal_strength_umts_roaming_sim1</item>
+ </string-array>
+
+ <!--reserved for overlay-->
+ <string-array name="telephony_siganl_strength_roaming_sim2">
+ </string-array>
+ <string-array name="telephony_siganl_strength_roaming_sim3">
+ </string-array>
+
+ <string-array name="telephony_signal_strength_g_sim1">
+ <item>array/signal_strength_g_normal_sim1</item>
+ <item>array/signal_strength_g_fully_sim1</item>
+ </string-array>
+
+ <string-array name="telephony_signal_strength_g_roaming_sim1">
+ <item>array/signal_strength_g_normal_roaming_sim1</item>
+ <item>array/signal_strength_g_fully_roaming_sim1</item>
+ </string-array>
+
+ <string-array name="telephony_signal_strength_e_sim1">
+ <item>array/signal_strength_e_normal_sim1</item>
+ <item>array/signal_strength_e_fully_sim1</item>
+ </string-array>
+
+ <string-array name="telephony_signal_strength_e_roaming_sim1">
+ <item>array/signal_strength_e_normal_roaming_sim1</item>
+ <item>array/signal_strength_e_fully_roaming_sim1</item>
+ </string-array>
+
+ <string-array name="telephony_signal_strength_3g_sim1">
+ <item>array/signal_strength_3g_normal_sim1</item>
+ <item>array/signal_strength_3g_fully_sim1</item>
+ </string-array>
+
+ <string-array name="telephony_signal_strength_3g_roaming_sim1">
+ <item>array/signal_strength_3g_normal_roaming_sim1</item>
+ <item>array/signal_strength_3g_fully_roaming_sim1</item>
+ </string-array>
+
+ <string-array name="telephony_signal_strength_4g_sim1">
+ <item>array/signal_strength_4g_normal_sim1</item>
+ <item>array/signal_strength_4g_fully_sim1</item>
+ </string-array>
+
+ <string-array name="telephony_signal_strength_4g_roaming_sim1">
+ <item>array/signal_strength_4g_normal_roaming_sim1</item>
+ <item>array/signal_strength_4g_fully_roaming_sim1</item>
+ </string-array>
+
+ <string-array name="telephony_signal_strength_h_sim1">
+ <item>array/signal_strength_h_normal_sim1</item>
+ <item>array/signal_strength_h_fully_sim1</item>
+ </string-array>
+
+ <string-array name="telephony_signal_strength_h_roaming_sim1">
+ <item>array/signal_strength_h_normal_roaming_sim1</item>
+ <item>array/signal_strength_h_fully_roaming_sim1</item>
+ </string-array>
+
+ <string-array name="telephony_signal_strength_hp_sim1">
+ <item>array/signal_strength_hp_normal_sim1</item>
+ <item>array/signal_strength_hp_fully_sim1</item>
+ </string-array>
+
+ <string-array name="telephony_signal_strength_hp_roaming_sim1">
+ <item>array/signal_strength_hp_normal_roaming_sim1</item>
+ <item>array/signal_strength_hp_fully_roaming_sim1</item>
+ </string-array>
+
+ <string-array name="telephony_signal_strength_1x_sim1">
+ <item>array/signal_strength_1x_normal_sim1</item>
+ <item>array/signal_strength_1x_fully_sim1</item>
+ </string-array>
+
+ <string-array name="telephony_signal_strength_1x_roaming_sim1">
+ <item>array/signal_strength_1x_normal_roaming_sim1</item>
+ <item>array/signal_strength_1x_fully_roaming_sim1</item>
+ </string-array>
+
+ <string-array name="telephony_signal_strength_cdma_sim1">
+ <item>array/signal_strength_cdma_normal_sim1</item>
+ <item>array/signal_strength_cdma_fully_sim1</item>
+ </string-array>
+
+ <string-array name="telephony_signal_strength_cdma_roaming_sim1">
+ <item>array/signal_strength_cdma_normal_roaming_sim1</item>
+ <item>array/signal_strength_cdma_fully_roaming_sim1</item>
+ </string-array>
+
+ <string-array name="telephony_signal_strength_umts_sim1">
+ <item>array/signal_strength_umts_normal_sim1</item>
+ <item>array/signal_strength_umts_fully_sim1</item>
+ </string-array>
+
+ <string-array name="telephony_signal_strength_umts_roaming_sim1">
+ <item>array/signal_strength_umts_normal_roaming_sim1</item>
+ <item>array/signal_strength_umts_fully_roaming_sim1</item>
+ </string-array>
+
+ <string-array name="signal_strength_g_normal_sim1">
+ <item>drawable/stat_sys_signal_0_fully</item>
+ <item>drawable/stat_sys_signal_1_fully</item>
+ <item>drawable/stat_sys_signal_2_fully</item>
+ <item>drawable/stat_sys_signal_3_fully</item>
+ <item>drawable/stat_sys_signal_4_fully</item>
+ </string-array>
+
+ <string-array name="signal_strength_g_fully_sim1">
+ <item>drawable/stat_sys_signal_0_fully</item>
+ <item>drawable/stat_sys_signal_1_fully</item>
+ <item>drawable/stat_sys_signal_2_fully</item>
+ <item>drawable/stat_sys_signal_3_fully</item>
+ <item>drawable/stat_sys_signal_4_fully</item>
+ </string-array>
+
+ <string-array name="signal_strength_g_normal_roaming_sim1">
+ <item>drawable/stat_sys_signal_0_fully</item>
+ <item>drawable/stat_sys_signal_1_fully</item>
+ <item>drawable/stat_sys_signal_2_fully</item>
+ <item>drawable/stat_sys_signal_3_fully</item>
+ <item>drawable/stat_sys_signal_4_fully</item>
+ </string-array>
+
+ <string-array name="signal_strength_g_fully_roaming_sim1">
+ <item>drawable/stat_sys_signal_0_fully</item>
+ <item>drawable/stat_sys_signal_1_fully</item>
+ <item>drawable/stat_sys_signal_2_fully</item>
+ <item>drawable/stat_sys_signal_3_fully</item>
+ <item>drawable/stat_sys_signal_4_fully</item>
+ </string-array>
+
+ <string-array name="signal_strength_e_normal_sim1">
+ <item>drawable/stat_sys_signal_0_fully</item>
+ <item>drawable/stat_sys_signal_1_fully</item>
+ <item>drawable/stat_sys_signal_2_fully</item>
+ <item>drawable/stat_sys_signal_3_fully</item>
+ <item>drawable/stat_sys_signal_4_fully</item>
+ </string-array>
+
+ <string-array name="signal_strength_e_fully_sim1">
+ <item>drawable/stat_sys_signal_0_fully</item>
+ <item>drawable/stat_sys_signal_1_fully</item>
+ <item>drawable/stat_sys_signal_2_fully</item>
+ <item>drawable/stat_sys_signal_3_fully</item>
+ <item>drawable/stat_sys_signal_4_fully</item>
+ </string-array>
+
+ <string-array name="signal_strength_e_normal_roaming_sim1">
+ <item>drawable/stat_sys_signal_0_fully</item>
+ <item>drawable/stat_sys_signal_1_fully</item>
+ <item>drawable/stat_sys_signal_2_fully</item>
+ <item>drawable/stat_sys_signal_3_fully</item>
+ <item>drawable/stat_sys_signal_4_fully</item>
+ </string-array>
+
+ <string-array name="signal_strength_e_fully_roaming_sim1">
+ <item>drawable/stat_sys_signal_0_fully</item>
+ <item>drawable/stat_sys_signal_1_fully</item>
+ <item>drawable/stat_sys_signal_2_fully</item>
+ <item>drawable/stat_sys_signal_3_fully</item>
+ <item>drawable/stat_sys_signal_4_fully</item>
+ </string-array>
+
+ <string-array name="signal_strength_3g_normal_sim1">
+ <item>drawable/stat_sys_signal_0_fully</item>
+ <item>drawable/stat_sys_signal_1_fully</item>
+ <item>drawable/stat_sys_signal_2_fully</item>
+ <item>drawable/stat_sys_signal_3_fully</item>
+ <item>drawable/stat_sys_signal_4_fully</item>
+ </string-array>
+
+ <string-array name="signal_strength_3g_fully_sim1">
+ <item>drawable/stat_sys_signal_0_fully</item>
+ <item>drawable/stat_sys_signal_1_fully</item>
+ <item>drawable/stat_sys_signal_2_fully</item>
+ <item>drawable/stat_sys_signal_3_fully</item>
+ <item>drawable/stat_sys_signal_4_fully</item>
+ </string-array>
+
+ <string-array name="signal_strength_3g_normal_roaming_sim1">
+ <item>drawable/stat_sys_signal_0_fully</item>
+ <item>drawable/stat_sys_signal_1_fully</item>
+ <item>drawable/stat_sys_signal_2_fully</item>
+ <item>drawable/stat_sys_signal_3_fully</item>
+ <item>drawable/stat_sys_signal_4_fully</item>
+ </string-array>
+
+ <string-array name="signal_strength_3g_fully_roaming_sim1">
+ <item>drawable/stat_sys_signal_0_fully</item>
+ <item>drawable/stat_sys_signal_1_fully</item>
+ <item>drawable/stat_sys_signal_2_fully</item>
+ <item>drawable/stat_sys_signal_3_fully</item>
+ <item>drawable/stat_sys_signal_4_fully</item>
+ </string-array>
+
+ <string-array name="signal_strength_4g_normal_sim1">
+ <item>drawable/stat_sys_signal_0_fully</item>
+ <item>drawable/stat_sys_signal_1_fully</item>
+ <item>drawable/stat_sys_signal_2_fully</item>
+ <item>drawable/stat_sys_signal_3_fully</item>
+ <item>drawable/stat_sys_signal_4_fully</item>
+ </string-array>
+
+ <string-array name="signal_strength_4g_fully_sim1">
+ <item>drawable/stat_sys_signal_0_fully</item>
+ <item>drawable/stat_sys_signal_1_fully</item>
+ <item>drawable/stat_sys_signal_2_fully</item>
+ <item>drawable/stat_sys_signal_3_fully</item>
+ <item>drawable/stat_sys_signal_4_fully</item>
+ </string-array>
+
+ <string-array name="signal_strength_4g_normal_roaming_sim1">
+ <item>drawable/stat_sys_signal_0_fully</item>
+ <item>drawable/stat_sys_signal_1_fully</item>
+ <item>drawable/stat_sys_signal_2_fully</item>
+ <item>drawable/stat_sys_signal_3_fully</item>
+ <item>drawable/stat_sys_signal_4_fully</item>
+ </string-array>
+
+ <string-array name="signal_strength_4g_fully_roaming_sim1">
+ <item>drawable/stat_sys_signal_0_fully</item>
+ <item>drawable/stat_sys_signal_1_fully</item>
+ <item>drawable/stat_sys_signal_2_fully</item>
+ <item>drawable/stat_sys_signal_3_fully</item>
+ <item>drawable/stat_sys_signal_4_fully</item>
+ </string-array>
+
+ <string-array name="signal_strength_h_normal_sim1">
+ <item>drawable/stat_sys_signal_0_fully</item>
+ <item>drawable/stat_sys_signal_1_fully</item>
+ <item>drawable/stat_sys_signal_2_fully</item>
+ <item>drawable/stat_sys_signal_3_fully</item>
+ <item>drawable/stat_sys_signal_4_fully</item>
+ </string-array>
+
+ <string-array name="signal_strength_h_fully_sim1">
+ <item>drawable/stat_sys_signal_0_fully</item>
+ <item>drawable/stat_sys_signal_1_fully</item>
+ <item>drawable/stat_sys_signal_2_fully</item>
+ <item>drawable/stat_sys_signal_3_fully</item>
+ <item>drawable/stat_sys_signal_4_fully</item>
+ </string-array>
+
+ <string-array name="signal_strength_h_normal_roaming_sim1">
+ <item>drawable/stat_sys_signal_0_fully</item>
+ <item>drawable/stat_sys_signal_1_fully</item>
+ <item>drawable/stat_sys_signal_2_fully</item>
+ <item>drawable/stat_sys_signal_3_fully</item>
+ <item>drawable/stat_sys_signal_4_fully</item>
+ </string-array>
+
+ <string-array name="signal_strength_h_fully_roaming_sim1">
+ <item>drawable/stat_sys_signal_0_fully</item>
+ <item>drawable/stat_sys_signal_1_fully</item>
+ <item>drawable/stat_sys_signal_2_fully</item>
+ <item>drawable/stat_sys_signal_3_fully</item>
+ <item>drawable/stat_sys_signal_4_fully</item>
+ </string-array>
+
+ <string-array name="signal_strength_hp_normal_sim1">
+ <item>drawable/stat_sys_signal_0_fully</item>
+ <item>drawable/stat_sys_signal_1_fully</item>
+ <item>drawable/stat_sys_signal_2_fully</item>
+ <item>drawable/stat_sys_signal_3_fully</item>
+ <item>drawable/stat_sys_signal_4_fully</item>
+ </string-array>
+
+ <string-array name="signal_strength_hp_fully_sim1">
+ <item>drawable/stat_sys_signal_0_fully</item>
+ <item>drawable/stat_sys_signal_1_fully</item>
+ <item>drawable/stat_sys_signal_2_fully</item>
+ <item>drawable/stat_sys_signal_3_fully</item>
+ <item>drawable/stat_sys_signal_4_fully</item>
+ </string-array>
+
+ <string-array name="signal_strength_hp_normal_roaming_sim1">
+ <item>drawable/stat_sys_signal_0_fully</item>
+ <item>drawable/stat_sys_signal_1_fully</item>
+ <item>drawable/stat_sys_signal_2_fully</item>
+ <item>drawable/stat_sys_signal_3_fully</item>
+ <item>drawable/stat_sys_signal_4_fully</item>
+ </string-array>
+
+ <string-array name="signal_strength_hp_fully_roaming_sim1">
+ <item>drawable/stat_sys_signal_0_fully</item>
+ <item>drawable/stat_sys_signal_1_fully</item>
+ <item>drawable/stat_sys_signal_2_fully</item>
+ <item>drawable/stat_sys_signal_3_fully</item>
+ <item>drawable/stat_sys_signal_4_fully</item>
+ </string-array>
+
+ <string-array name="signal_strength_1x_normal_sim1">
+ <item>drawable/stat_sys_signal_0_fully</item>
+ <item>drawable/stat_sys_signal_1_fully</item>
+ <item>drawable/stat_sys_signal_2_fully</item>
+ <item>drawable/stat_sys_signal_3_fully</item>
+ <item>drawable/stat_sys_signal_4_fully</item>
+ </string-array>
+
+ <string-array name="signal_strength_1x_fully_sim1">
+ <item>drawable/stat_sys_signal_0_fully</item>
+ <item>drawable/stat_sys_signal_1_fully</item>
+ <item>drawable/stat_sys_signal_2_fully</item>
+ <item>drawable/stat_sys_signal_3_fully</item>
+ <item>drawable/stat_sys_signal_4_fully</item>
+ </string-array>
+
+ <string-array name="signal_strength_1x_normal_roaming_sim1">
+ <item>drawable/stat_sys_signal_0_fully</item>
+ <item>drawable/stat_sys_signal_1_fully</item>
+ <item>drawable/stat_sys_signal_2_fully</item>
+ <item>drawable/stat_sys_signal_3_fully</item>
+ <item>drawable/stat_sys_signal_4_fully</item>
+ </string-array>
+
+ <string-array name="signal_strength_1x_fully_roaming_sim1">
+ <item>drawable/stat_sys_signal_0_fully</item>
+ <item>drawable/stat_sys_signal_1_fully</item>
+ <item>drawable/stat_sys_signal_2_fully</item>
+ <item>drawable/stat_sys_signal_3_fully</item>
+ <item>drawable/stat_sys_signal_4_fully</item>
+ </string-array>
+
+ <string-array name="signal_strength_cdma_normal_sim1">
+ <item>drawable/stat_sys_signal_0_fully</item>
+ <item>drawable/stat_sys_signal_1_fully</item>
+ <item>drawable/stat_sys_signal_2_fully</item>
+ <item>drawable/stat_sys_signal_3_fully</item>
+ <item>drawable/stat_sys_signal_4_fully</item>
+ </string-array>
+
+ <string-array name="signal_strength_cdma_fully_sim1">
+ <item>drawable/stat_sys_signal_0_fully</item>
+ <item>drawable/stat_sys_signal_1_fully</item>
+ <item>drawable/stat_sys_signal_2_fully</item>
+ <item>drawable/stat_sys_signal_3_fully</item>
+ <item>drawable/stat_sys_signal_4_fully</item>
+ </string-array>
+
+ <string-array name="signal_strength_cdma_normal_roaming_sim1">
+ <item>drawable/stat_sys_signal_0_fully</item>
+ <item>drawable/stat_sys_signal_1_fully</item>
+ <item>drawable/stat_sys_signal_2_fully</item>
+ <item>drawable/stat_sys_signal_3_fully</item>
+ <item>drawable/stat_sys_signal_4_fully</item>
+ </string-array>
+
+ <string-array name="signal_strength_cdma_fully_roaming_sim1">
+ <item>drawable/stat_sys_signal_0_fully</item>
+ <item>drawable/stat_sys_signal_1_fully</item>
+ <item>drawable/stat_sys_signal_2_fully</item>
+ <item>drawable/stat_sys_signal_3_fully</item>
+ <item>drawable/stat_sys_signal_4_fully</item>
+ </string-array>
+
+ <string-array name="signal_strength_umts_normal_sim1">
+ <item>drawable/stat_sys_signal_0_fully</item>
+ <item>drawable/stat_sys_signal_1_fully</item>
+ <item>drawable/stat_sys_signal_2_fully</item>
+ <item>drawable/stat_sys_signal_3_fully</item>
+ <item>drawable/stat_sys_signal_4_fully</item>
+ </string-array>
+
+ <string-array name="signal_strength_umts_fully_sim1">
+ <item>drawable/stat_sys_signal_0_fully</item>
+ <item>drawable/stat_sys_signal_1_fully</item>
+ <item>drawable/stat_sys_signal_2_fully</item>
+ <item>drawable/stat_sys_signal_3_fully</item>
+ <item>drawable/stat_sys_signal_4_fully</item>
+ </string-array>
+
+ <string-array name="signal_strength_umts_normal_roaming_sim1">
+ <item>drawable/stat_sys_signal_0_fully</item>
+ <item>drawable/stat_sys_signal_1_fully</item>
+ <item>drawable/stat_sys_signal_2_fully</item>
+ <item>drawable/stat_sys_signal_3_fully</item>
+ <item>drawable/stat_sys_signal_4_fully</item>
+ </string-array>
+
+ <string-array name="signal_strength_umts_fully_roaming_sim1">
+ <item>drawable/stat_sys_signal_0_fully</item>
+ <item>drawable/stat_sys_signal_1_fully</item>
+ <item>drawable/stat_sys_signal_2_fully</item>
+ <item>drawable/stat_sys_signal_3_fully</item>
+ <item>drawable/stat_sys_signal_4_fully</item>
+ </string-array>
+
+ <!--signal strength description-->
+ <string-array name="signal_strength_description">
+ <item>string/accessibility_no_phone</item>
+ <item>string/accessibility_phone_one_bar</item>
+ <item>string/accessibility_phone_two_bars</item>
+ <item>string/accessibility_phone_three_bars</item>
+ <item>string/accessibility_phone_signal_full</item>
+ </string-array>
+
+ <!--null signal-->
+ <!--Add three items to support TSTS-->
+ <string-array name="multi_signal_null">
+ <item>drawable/stat_sys_signal_null</item>
+ <item>drawable/stat_sys_signal_null</item>
+ <item>drawable/stat_sys_signal_null</item>
+ </string-array>
+
+ <!--no sim-->
+ <!--Add three items to support TSTS-->
+ <string-array name="multi_no_sim">
+ <item>drawable/stat_sys_no_sims</item>
+ <item>drawable/stat_sys_no_sims</item>
+ <item>drawable/stat_sys_no_sims</item>
+ </string-array>
+
+ <!--reserved for overlay-->
+ <string-array name="telephony_signal_strength_g_sim2">
+ <item>array/signal_strength_g_normal_sim2</item>
+ <item>array/signal_strength_g_fully_sim2</item>
+ </string-array>
+ <string-array name="telephony_signal_strength_g_roaming_sim2">
+ <item>array/signal_strength_g_normal_roaming_sim2</item>
+ <item>array/signal_strength_g_fully_roaming_sim2</item>
+ </string-array>
+ <string-array name="telephony_signal_strength_e_sim2">
+ <item>array/signal_strength_e_normal_sim2</item>
+ <item>array/signal_strength_e_fully_sim2</item>
+ </string-array>
+ <string-array name="telephony_signal_strength_e_roaming_sim2">
+ <item>array/signal_strength_e_normal_roaming_sim2</item>
+ <item>array/signal_strength_e_fully_roaming_sim2</item>
+ </string-array>
+ <string-array name="telephony_signal_strength_3g_sim2">
+ <item>array/signal_strength_3g_normal_sim2</item>
+ <item>array/signal_strength_3g_fully_sim2</item>
+ </string-array>
+ <string-array name="telephony_signal_strength_3g_roaming_sim2">
+ <item>array/signal_strength_3g_normal_roaming_sim2</item>
+ <item>array/signal_strength_3g_fully_roaming_sim2</item>
+ </string-array>
+ <string-array name="telephony_signal_strength_4g_sim2">
+ <item>array/signal_strength_4g_normal_sim2</item>
+ <item>array/signal_strength_4g_fully_sim2</item>
+ </string-array>
+ <string-array name="telephony_signal_strength_4g_roaming_sim2">
+ <item>array/signal_strength_4g_normal_roaming_sim2</item>
+ <item>array/signal_strength_4g_fully_roaming_sim2</item>
+ </string-array>
+ <string-array name="telephony_signal_strength_h_sim2">
+ <item>array/signal_strength_h_normal_sim2</item>
+ <item>array/signal_strength_h_fully_sim2</item>
+ </string-array>
+ <string-array name="telephony_signal_strength_h_roaming_sim2">
+ <item>array/signal_strength_h_normal_roaming_sim2</item>
+ <item>array/signal_strength_h_fully_roaming_sim2</item>
+ </string-array>
+ <string-array name="telephony_signal_strength_hp_sim2">
+ <item>array/signal_strength_hp_normal_sim2</item>
+ <item>array/signal_strength_hp_fully_sim2</item>
+ </string-array>
+ <string-array name="telephony_signal_strength_hp_roaming_sim2">
+ <item>array/signal_strength_hp_normal_roaming_sim2</item>
+ <item>array/signal_strength_hp_fully_roaming_sim2</item>
+ </string-array>
+ <string-array name="telephony_signal_strength_1x_sim2">
+ <item>array/signal_strength_1x_normal_sim2</item>
+ <item>array/signal_strength_1x_fully_sim2</item>
+ </string-array>
+ <string-array name="telephony_signal_strength_1x_roaming_sim2">
+ <item>array/signal_strength_1x_normal_roaming_sim2</item>
+ <item>array/signal_strength_1x_fully_roaming_sim2</item>
+ </string-array>
+ <string-array name="telephony_signal_strength_cdma_sim2">
+ <item>array/signal_strength_cdma_normal_sim2</item>
+ <item>array/signal_strength_cdma_fully_sim2</item>
+ </string-array>
+ <string-array name="telephony_signal_strength_cdma_roaming_sim2">
+ <item>array/signal_strength_cdma_normal_roaming_sim2</item>
+ <item>array/signal_strength_cdma_fully_roaming_sim2</item>
+ </string-array>
+ <string-array name="telephony_signal_strength_umts_sim2">
+ <item>array/signal_strength_umts_normal_sim2</item>
+ <item>array/signal_strength_umts_fully_sim2</item>
+ </string-array>
+ <string-array name="telephony_signal_strength_umts_roaming_sim2">
+ <item>array/signal_strength_umts_normal_roaming_sim2</item>
+ <item>array/signal_strength_umts_fully_roaming_sim2</item>
+ </string-array>
+ <!--reserved for overlay-->
+ <string-array name="signal_strength_g_normal_sim2">
+ </string-array>
+ <string-array name="signal_strength_g_fully_sim2">
+ </string-array>
+ <string-array name="signal_strength_g_normal_roaming_sim2">
+ </string-array>
+ <string-array name="signal_strength_g_fully_roaming_sim2">
+ </string-array>
+ <string-array name="signal_strength_e_normal_sim2">
+ </string-array>
+ <string-array name="signal_strength_e_fully_sim2">
+ </string-array>
+ <string-array name="signal_strength_e_normal_roaming_sim2">
+ </string-array>
+ <string-array name="signal_strength_e_fully_roaming_sim2">
+ </string-array>
+ <string-array name="signal_strength_3g_normal_sim2">
+ </string-array>
+ <string-array name="signal_strength_3g_fully_sim2">
+ </string-array>
+ <string-array name="signal_strength_3g_normal_roaming_sim2">
+ </string-array>
+ <string-array name="signal_strength_3g_fully_roaming_sim2">
+ </string-array>
+ <string-array name="signal_strength_4g_normal_sim2">
+ </string-array>
+ <string-array name="signal_strength_4g_fully_sim2">
+ </string-array>
+ <string-array name="signal_strength_4g_normal_roaming_sim2">
+ </string-array>
+ <string-array name="signal_strength_4g_fully_roaming_sim2">
+ </string-array>
+ <string-array name="signal_strength_h_normal_sim2">
+ </string-array>
+ <string-array name="signal_strength_h_fully_sim2">
+ </string-array>
+ <string-array name="signal_strength_h_normal_roaming_sim2">
+ </string-array>
+ <string-array name="signal_strength_h_fully_roaming_sim2">
+ </string-array>
+ <string-array name="signal_strength_hp_normal_sim2">
+ </string-array>
+ <string-array name="signal_strength_hp_fully_sim2">
+ </string-array>
+ <string-array name="signal_strength_hp_normal_roaming_sim2">
+ </string-array>
+ <string-array name="signal_strength_hp_fully_roaming_sim2">
+ </string-array>
+ <string-array name="signal_strength_1x_normal_sim2">
+ </string-array>
+ <string-array name="signal_strength_1x_fully_sim2">
+ </string-array>
+ <string-array name="signal_strength_1x_normal_roaming_sim2">
+ </string-array>
+ <string-array name="signal_strength_1x_fully_roaming_sim2">
+ </string-array>
+ <string-array name="signal_strength_cdma_normal_sim2">
+ </string-array>
+ <string-array name="signal_strength_cdma_fully_sim2">
+ </string-array>
+ <string-array name="signal_strength_cdma_normal_roaming_sim2">
+ </string-array>
+ <string-array name="signal_strength_cdma_fully_roaming_sim2">
+ </string-array>
+ <string-array name="signal_strength_umts_normal_sim2">
+ </string-array>
+ <string-array name="signal_strength_umts_fully_sim2">
+ </string-array>
+ <string-array name="signal_strength_umts_normal_roaming_sim2">
+ </string-array>
+ <string-array name="signal_strength_umts_fully_roaming_sim2">
+ </string-array>
+
+ <string-array name="telephony_signal_strength_g_sim3">
+ <item>array/signal_strength_g_normal_sim3</item>
+ <item>array/signal_strength_g_fully_sim3</item>
+ </string-array>
+ <string-array name="telephony_signal_strength_g_roaming_sim3">
+ <item>array/signal_strength_g_normal_roaming_sim3</item>
+ <item>array/signal_strength_g_fully_roaming_sim3</item>
+ </string-array>
+ <string-array name="telephony_signal_strength_e_sim3">
+ <item>array/signal_strength_e_normal_sim3</item>
+ <item>array/signal_strength_e_fully_sim3</item>
+ </string-array>
+ <string-array name="telephony_signal_strength_e_roaming_sim3">
+ <item>array/signal_strength_e_normal_roaming_sim3</item>
+ <item>array/signal_strength_e_fully_roaming_sim3</item>
+ </string-array>
+ <string-array name="telephony_signal_strength_3g_sim3">
+ <item>array/signal_strength_3g_normal_sim3</item>
+ <item>array/signal_strength_3g_fully_sim3</item>
+ </string-array>
+ <string-array name="telephony_signal_strength_3g_roaming_sim3">
+ <item>array/signal_strength_3g_normal_roaming_sim3</item>
+ <item>array/signal_strength_3g_fully_roaming_sim3</item>
+ </string-array>
+ <string-array name="telephony_signal_strength_4g_sim3">
+ <item>array/signal_strength_4g_normal_sim3</item>
+ <item>array/signal_strength_4g_fully_sim3</item>
+ </string-array>
+ <string-array name="telephony_signal_strength_4g_roaming_sim3">
+ <item>array/signal_strength_4g_normal_roaming_sim3</item>
+ <item>array/signal_strength_4g_fully_roaming_sim3</item>
+ </string-array>
+ <string-array name="telephony_signal_strength_h_sim3">
+ <item>array/signal_strength_h_normal_sim3</item>
+ <item>array/signal_strength_h_fully_sim3</item>
+ </string-array>
+ <string-array name="telephony_signal_strength_h_roaming_sim3">
+ <item>array/signal_strength_h_normal_roaming_sim3</item>
+ <item>array/signal_strength_h_fully_roaming_sim3</item>
+ </string-array>
+ <string-array name="telephony_signal_strength_hp_sim3">
+ <item>array/signal_strength_hp_normal_sim3</item>
+ <item>array/signal_strength_hp_fully_sim3</item>
+ </string-array>
+ <string-array name="telephony_signal_strength_hp_roaming_sim3">
+ <item>array/signal_strength_hp_normal_roaming_sim3</item>
+ <item>array/signal_strength_hp_fully_roaming_sim3</item>
+ </string-array>
+ <string-array name="telephony_signal_strength_1x_sim3">
+ <item>array/signal_strength_1x_normal_sim3</item>
+ <item>array/signal_strength_1x_fully_sim3</item>
+ </string-array>
+ <string-array name="telephony_signal_strength_1x_roaming_sim3">
+ <item>array/signal_strength_1x_normal_roaming_sim3</item>
+ <item>array/signal_strength_1x_fully_roaming_sim3</item>
+ </string-array>
+ <string-array name="telephony_signal_strength_cdma_sim3">
+ <item>array/signal_strength_cdma_normal_sim3</item>
+ <item>array/signal_strength_cdma_fully_sim3</item>
+ </string-array>
+ <string-array name="telephony_signal_strength_cdma_roaming_sim3">
+ <item>array/signal_strength_cdma_normal_roaming_sim3</item>
+ <item>array/signal_strength_cdma_fully_roaming_sim3</item>
+ </string-array>
+ <string-array name="telephony_signal_strength_umts_sim3">
+ <item>array/signal_strength_umts_normal_sim3</item>
+ <item>array/signal_strength_umts_fully_sim3</item>
+ </string-array>
+ <string-array name="telephony_signal_strength_umts_roaming_sim3">
+ <item>array/signal_strength_umts_normal_roaming_sim3</item>
+ <item>array/signal_strength_umts_fully_roaming_sim3</item>
+ </string-array>
+ <!--reserved for overlay-->
+ <string-array name="signal_strength_g_normal_sim3">
+ </string-array>
+ <string-array name="signal_strength_g_fully_sim3">
+ </string-array>
+ <string-array name="signal_strength_g_normal_roaming_sim3">
+ </string-array>
+ <string-array name="signal_strength_g_fully_roaming_sim3">
+ </string-array>
+ <string-array name="signal_strength_e_normal_sim3">
+ </string-array>
+ <string-array name="signal_strength_e_fully_sim3">
+ </string-array>
+ <string-array name="signal_strength_e_normal_roaming_sim3">
+ </string-array>
+ <string-array name="signal_strength_e_fully_roaming_sim3">
+ </string-array>
+ <string-array name="signal_strength_3g_normal_sim3">
+ </string-array>
+ <string-array name="signal_strength_3g_fully_sim3">
+ </string-array>
+ <string-array name="signal_strength_3g_normal_roaming_sim3">
+ </string-array>
+ <string-array name="signal_strength_3g_fully_roaming_sim3">
+ </string-array>
+ <string-array name="signal_strength_4g_normal_sim3">
+ </string-array>
+ <string-array name="signal_strength_4g_fully_sim3">
+ </string-array>
+ <string-array name="signal_strength_4g_normal_roaming_sim3">
+ </string-array>
+ <string-array name="signal_strength_4g_fully_roaming_sim3">
+ </string-array>
+ <string-array name="signal_strength_h_normal_sim3">
+ </string-array>
+ <string-array name="signal_strength_h_fully_sim3">
+ </string-array>
+ <string-array name="signal_strength_h_normal_roaming_sim3">
+ </string-array>
+ <string-array name="signal_strength_h_fully_roaming_sim3">
+ </string-array>
+ <string-array name="signal_strength_hp_normal_sim3">
+ </string-array>
+ <string-array name="signal_strength_hp_fully_sim3">
+ </string-array>
+ <string-array name="signal_strength_hp_normal_roaming_sim3">
+ </string-array>
+ <string-array name="signal_strength_hp_fully_roaming_sim3">
+ </string-array>
+ <string-array name="signal_strength_1x_normal_sim3">
+ </string-array>
+ <string-array name="signal_strength_1x_fully_sim3">
+ </string-array>
+ <string-array name="signal_strength_1x_normal_roaming_sim3">
+ </string-array>
+ <string-array name="signal_strength_1x_fully_roaming_sim3">
+ </string-array>
+ <string-array name="signal_strength_cdma_normal_sim3">
+ </string-array>
+ <string-array name="signal_strength_cdma_fully_sim3">
+ </string-array>
+ <string-array name="signal_strength_cdma_normal_roaming_sim3">
+ </string-array>
+ <string-array name="signal_strength_cdma_fully_roaming_sim3">
+ </string-array>
+ <string-array name="signal_strength_umts_normal_sim3">
+ </string-array>
+ <string-array name="signal_strength_umts_fully_sim3">
+ </string-array>
+ <string-array name="signal_strength_umts_normal_roaming_sim3">
+ </string-array>
+ <string-array name="signal_strength_umts_fully_roaming_sim3">
+ </string-array>
+
+ <!--convert stacked icons to single icons-->
+ <array name="stacked_signal_icons">
+ <item>@drawable/stat_sys_signal_0_3g</item>
+ <item>@drawable/stat_sys_signal_0_4g</item>
+ <item>@drawable/stat_sys_signal_1_3g</item>
+ <item>@drawable/stat_sys_signal_1_4g</item>
+ <item>@drawable/stat_sys_signal_2_3g</item>
+ <item>@drawable/stat_sys_signal_2_4g</item>
+ <item>@drawable/stat_sys_signal_3_3g</item>
+ <item>@drawable/stat_sys_signal_3_4g</item>
+ <item>@drawable/stat_sys_signal_4_3g</item>
+ <item>@drawable/stat_sys_signal_4_4g</item>
+ <item>@drawable/stat_sys_signal_0_3g_fully</item>
+ <item>@drawable/stat_sys_signal_0_4g_fully</item>
+ <item>@drawable/stat_sys_signal_1_3g_fully</item>
+ <item>@drawable/stat_sys_signal_1_4g_fully</item>
+ <item>@drawable/stat_sys_signal_2_3g_fully</item>
+ <item>@drawable/stat_sys_signal_2_4g_fully</item>
+ <item>@drawable/stat_sys_signal_3_3g_fully</item>
+ <item>@drawable/stat_sys_signal_3_4g_fully</item>
+ <item>@drawable/stat_sys_signal_4_3g_fully</item>
+ <item>@drawable/stat_sys_signal_4_4g_fully</item>
+ </array>
+
+ <array name="single_signal_icons">
+ <item>@drawable/stat_sys_signal_0_3g_default</item>
+ <item>@drawable/stat_sys_signal_0_4g_default</item>
+ <item>@drawable/stat_sys_signal_1_3g_default</item>
+ <item>@drawable/stat_sys_signal_1_4g_default</item>
+ <item>@drawable/stat_sys_signal_2_3g_default</item>
+ <item>@drawable/stat_sys_signal_2_4g_default</item>
+ <item>@drawable/stat_sys_signal_3_3g_default</item>
+ <item>@drawable/stat_sys_signal_3_4g_default</item>
+ <item>@drawable/stat_sys_signal_4_3g_default</item>
+ <item>@drawable/stat_sys_signal_4_4g_default</item>
+ <item>@drawable/stat_sys_signal_0_3g_default_fully</item>
+ <item>@drawable/stat_sys_signal_0_4g_default_fully</item>
+ <item>@drawable/stat_sys_signal_1_3g_default_fully</item>
+ <item>@drawable/stat_sys_signal_1_4g_default_fully</item>
+ <item>@drawable/stat_sys_signal_2_3g_default_fully</item>
+ <item>@drawable/stat_sys_signal_2_4g_default_fully</item>
+ <item>@drawable/stat_sys_signal_3_3g_default_fully</item>
+ <item>@drawable/stat_sys_signal_3_4g_default_fully</item>
+ <item>@drawable/stat_sys_signal_4_3g_default_fully</item>
+ <item>@drawable/stat_sys_signal_4_4g_default_fully</item>
+ </array>
</resources>
diff --git a/packages/SystemUI/res/values/config.xml b/packages/SystemUI/res/values/config.xml
index 3391b40..7379c56 100644
--- a/packages/SystemUI/res/values/config.xml
+++ b/packages/SystemUI/res/values/config.xml
@@ -138,6 +138,35 @@
<!-- Should "4G" be shown instead of "LTE" when the network is NETWORK_TYPE_LTE? -->
<bool name="config_show4GForLTE">true</bool>
+ <!-- Whether or not we also show rsrp level for LTE. -->
+ <bool name="config_showRsrpSignalLevelforLTE">false</bool>
+
+ <!-- Whether or not we show carrier label in notification panel. -->
+ <bool name="config_showCarrierLabel">false</bool>
+
+ <!-- Whether or not we also show wifi activity in status bar. -->
+ <bool name="config_showWifiActivity">false</bool>
+
+ <!-- Show indicator for Wifi on but not connected. -->
+ <bool name="config_showWifiIndicatorWhenEnabled">false</bool>
+
+ <!-- style of status bar:
+ 0: Default Android style
+ 1: Show data activity with data type at the left side of
+ signal icon, and signal icon may be two icons
+ stacked, the upper one is to show 3G, and the lower one
+ is to show 2G.
+ 2: Do not show data activity besides signal icon, instead,
+ it shows data activity within signal view.
+ 3: Show data activity with data type at the left side
+ of signal icon, and do not show two stacked icon on
+ one slot.
+ -->
+ <integer name="status_bar_style">0</integer>
+
+ <!-- Control whether status bar should fetch mobile signal icons from xml file dynamically -->
+ <bool name="config_read_icons_from_xml">false</bool>
+
<!-- milliseconds before the heads up notification auto-dismisses. -->
<integer name="heads_up_notification_decay">5000</integer>
@@ -290,6 +319,9 @@
<!-- Enable the default volume dialog -->
<bool name="enable_volume_ui">true</bool>
+ <!-- Enable operator name on status bar -->
+ <bool name="enable_operator_name">false</bool>
+
<!-- Duration of the full carrier network change icon animation. -->
<integer name="carrier_network_change_anim_time">3000</integer>
diff --git a/packages/SystemUI/res/values/dimens.xml b/packages/SystemUI/res/values/dimens.xml
index 03ea73c..cb4bb02 100644
--- a/packages/SystemUI/res/values/dimens.xml
+++ b/packages/SystemUI/res/values/dimens.xml
@@ -484,7 +484,7 @@
<dimen name="keyguard_affordance_icon_height">24dp</dimen>
<dimen name="keyguard_affordance_icon_width">24dp</dimen>
- <dimen name="keyguard_indication_margin_bottom">65dp</dimen>
+ <dimen name="keyguard_indication_margin_bottom">90dp</dimen>
<!-- The text size for battery level -->
<dimen name="battery_level_text_size">12sp</dimen>
diff --git a/packages/SystemUI/src/com/android/systemui/qs/tiles/CellularTile.java b/packages/SystemUI/src/com/android/systemui/qs/tiles/CellularTile.java
index f3ad9d8..fb46729 100644
--- a/packages/SystemUI/src/com/android/systemui/qs/tiles/CellularTile.java
+++ b/packages/SystemUI/src/com/android/systemui/qs/tiles/CellularTile.java
@@ -167,8 +167,9 @@
@Override
public void setMobileDataIndicators(IconState statusIcon, IconState qsIcon, int statusType,
- int qsType, boolean activityIn, boolean activityOut, String typeContentDescription,
- String description, boolean isWide, int subId) {
+ int qsType, boolean activityIn, boolean activityOut, int dataActivityId,
+ int mobileActivityId, int stackedDataIcon, int stackedVoiceIcon,
+ String typeContentDescription, String description, boolean isWide, int subId) {
if (qsIcon == null) {
// Not data sim, don't display.
return;
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/SignalClusterView.java b/packages/SystemUI/src/com/android/systemui/statusbar/SignalClusterView.java
index cc30882..787ec07 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/SignalClusterView.java
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/SignalClusterView.java
@@ -18,6 +18,7 @@
import android.content.Context;
import android.content.res.ColorStateList;
+import android.content.res.Resources;
import android.graphics.Color;
import android.graphics.PorterDuff;
import android.graphics.drawable.Animatable;
@@ -67,8 +68,8 @@
private int mEthernetIconId = 0;
private int mLastEthernetIconId = -1;
private boolean mWifiVisible = false;
- private int mWifiStrengthId = 0;
- private int mLastWifiStrengthId = -1;
+ private int mWifiStrengthId = 0, mWifiActivityId = 0;
+ private int mLastWifiStrengthId = -1, mLastWifiActivityId = -1;
private boolean mIsAirplaneMode = false;
private int mAirplaneIconId = 0;
private int mLastAirplaneIconId = -1;
@@ -78,10 +79,12 @@
private ArrayList<PhoneState> mPhoneStates = new ArrayList<PhoneState>();
private int mIconTint = Color.WHITE;
private float mDarkIntensity;
+ private int mNoSimsIcon;
ViewGroup mEthernetGroup, mWifiGroup;
View mNoSimsCombo;
ImageView mVpn, mEthernet, mWifi, mAirplane, mNoSims, mEthernetDark, mWifiDark, mNoSimsDark;
+ ImageView mWifiActivity;
View mWifiAirplaneSpacer;
View mWifiSignalSpacer;
LinearLayout mMobileSignalGroup;
@@ -167,6 +170,7 @@
mWifiGroup = (ViewGroup) findViewById(R.id.wifi_combo);
mWifi = (ImageView) findViewById(R.id.wifi_signal);
mWifiDark = (ImageView) findViewById(R.id.wifi_signal_dark);
+ mWifiActivity = (ImageView) findViewById(R.id.wifi_inout);
mAirplane = (ImageView) findViewById(R.id.airplane);
mNoSims = (ImageView) findViewById(R.id.no_sims);
mNoSimsDark = (ImageView) findViewById(R.id.no_sims_dark);
@@ -190,6 +194,7 @@
mEthernet = null;
mWifiGroup = null;
mWifi = null;
+ mWifiActivity = null;
mAirplane = null;
mMobileSignalGroup.removeAllViews();
mMobileSignalGroup = null;
@@ -215,6 +220,7 @@
boolean activityIn, boolean activityOut, String description) {
mWifiVisible = statusIcon.visible && !mBlockWifi;
mWifiStrengthId = statusIcon.icon;
+ mWifiActivityId = getWifiActivityId(activityIn, activityOut);
mWifiDescription = statusIcon.contentDescription;
apply();
@@ -222,8 +228,9 @@
@Override
public void setMobileDataIndicators(IconState statusIcon, IconState qsIcon, int statusType,
- int qsType, boolean activityIn, boolean activityOut, String typeContentDescription,
- String description, boolean isWide, int subId) {
+ int qsType, boolean activityIn, boolean activityOut, int dataActivityId,
+ int mobileActivityId, int stackedDataId, int stackedVoiceId,
+ String typeContentDescription, String description, boolean isWide, int subId) {
PhoneState state = getState(subId);
if (state == null) {
return;
@@ -234,6 +241,10 @@
state.mMobileDescription = statusIcon.contentDescription;
state.mMobileTypeDescription = typeContentDescription;
state.mIsMobileTypeIconWide = statusType != 0 && isWide;
+ state.mDataActivityId = dataActivityId;
+ state.mMobileActivityId = mobileActivityId;
+ state.mStackedDataId = stackedDataId;
+ state.mStackedVoiceId = stackedVoiceId;
apply();
}
@@ -295,6 +306,43 @@
return null;
}
+
+ private int getWifiActivityId(boolean activityIn, boolean activityOut) {
+ if (!getContext().getResources().getBoolean(R.bool.config_showWifiActivity)) {
+ return 0;
+ }
+ int activityId = 0;
+ if (activityIn && activityOut) {
+ activityId = R.drawable.stat_sys_wifi_inout;
+ } else if (activityIn) {
+ activityId = R.drawable.stat_sys_wifi_in;
+ } else if (activityOut) {
+ activityId = R.drawable.stat_sys_wifi_out;
+ }
+ return activityId;
+ }
+
+ private int getNoSimIcon() {
+ int resId = 0;
+ final String[] noSimArray;
+ Resources res = getContext().getResources();
+
+ if (!res.getBoolean(R.bool.config_read_icons_from_xml)) return resId;
+
+ try {
+ noSimArray = res.getStringArray(R.array.multi_no_sim);
+ } catch (android.content.res.Resources.NotFoundException e) {
+ return resId;
+ }
+
+ if (noSimArray == null) return resId;
+
+ String resName = noSimArray[0];
+ resId = res.getIdentifier(resName, null, getContext().getPackageName());
+ if (DEBUG) Log.d(TAG, "getNoSimIcon resId = " + resId + " resName = " + resName);
+ return resId;
+ }
+
private PhoneState inflatePhoneState(int subId) {
PhoneState state = new PhoneState(subId, mContext);
if (mMobileSignalGroup != null) {
@@ -349,6 +397,11 @@
mLastWifiStrengthId = -1;
}
+ if (mWifiActivity != null) {
+ mWifiActivity.setImageDrawable(null);
+ mLastWifiActivityId = -1;
+ }
+
for (PhoneState state : mPhoneStates) {
if (state.mMobile != null) {
state.mMobile.setImageDrawable(null);
@@ -401,6 +454,10 @@
mWifiDark.setImageResource(mWifiStrengthId);
mLastWifiStrengthId = mWifiStrengthId;
}
+ if (mWifiActivityId != mLastWifiActivityId) {
+ mWifiActivity.setImageResource(mWifiActivityId);
+ mLastWifiActivityId = mWifiActivityId;
+ }
mWifiGroup.setContentDescription(mWifiDescription);
mWifiGroup.setVisibility(View.VISIBLE);
} else {
@@ -408,9 +465,9 @@
}
if (DEBUG) Log.d(TAG,
- String.format("wifi: %s sig=%d",
+ String.format("wifi: %s sig=%d act=%d",
(mWifiVisible ? "VISIBLE" : "GONE"),
- mWifiStrengthId));
+ mWifiStrengthId, mWifiActivityId));
boolean anyMobileVisible = false;
int firstMobileTypeId = 0;
@@ -446,6 +503,13 @@
mWifiSignalSpacer.setVisibility(View.GONE);
}
+ if (mNoSimsVisible && mNoSims != null && mNoSimsDark != null) {
+ if (mNoSimsIcon == 0) mNoSimsIcon = getNoSimIcon();
+ if (mNoSimsIcon != 0) {
+ mNoSims.setImageResource(mNoSimsIcon);
+ mNoSimsDark.setImageResource(mNoSimsIcon);
+ }
+ }
mNoSimsCombo.setVisibility(mNoSimsVisible ? View.VISIBLE : View.GONE);
boolean anythingVisible = mNoSimsVisible || mWifiVisible || mIsAirplaneMode
@@ -492,6 +556,11 @@
private ViewGroup mMobileGroup;
private ImageView mMobile, mMobileDark, mMobileType;
+ private int mDataActivityId = 0, mMobileActivityId = 0;
+ private int mStackedDataId = 0, mStackedVoiceId = 0;
+ private ImageView mDataActivity, mMobileActivity, mStackedData, mStackedVoice;
+ private ViewGroup mMobileSingleGroup, mMobileStackedGroup;
+
public PhoneState(int subId, Context context) {
ViewGroup root = (ViewGroup) LayoutInflater.from(context)
.inflate(R.layout.mobile_signal_group, null);
@@ -504,6 +573,14 @@
mMobile = (ImageView) root.findViewById(R.id.mobile_signal);
mMobileDark = (ImageView) root.findViewById(R.id.mobile_signal_dark);
mMobileType = (ImageView) root.findViewById(R.id.mobile_type);
+ mMobileActivity = (ImageView) root.findViewById(R.id.mobile_inout);
+
+ mDataActivity = (ImageView) root.findViewById(R.id.data_inout);
+ mStackedData = (ImageView) root.findViewById(R.id.mobile_signal_data);
+ mStackedVoice = (ImageView) root.findViewById(R.id.mobile_signal_voice);
+
+ mMobileSingleGroup = (ViewGroup) root.findViewById(R.id.mobile_signal_single);
+ mMobileStackedGroup = (ViewGroup) root.findViewById(R.id.mobile_signal_stacked);
}
public boolean apply(boolean isSecondaryIcon) {
@@ -527,6 +604,37 @@
}
mMobileType.setImageResource(mMobileTypeId);
+
+ mDataActivity.setImageResource(mDataActivityId);
+ Drawable dataActivityDrawable = mDataActivity.getDrawable();
+ if (dataActivityDrawable instanceof Animatable) {
+ Animatable ad = (Animatable) dataActivityDrawable;
+ if (!ad.isRunning()) {
+ ad.start();
+ }
+ }
+
+ mMobileActivity.setImageResource(mMobileActivityId);
+ Drawable mobileActivityDrawable = mMobileActivity.getDrawable();
+ if (mobileActivityDrawable instanceof Animatable) {
+ Animatable ad = (Animatable) mobileActivityDrawable;
+ if (!ad.isRunning()) {
+ ad.start();
+ }
+ }
+
+ if (mStackedDataId != 0 && mStackedVoiceId != 0) {
+ mStackedData.setImageResource(mStackedDataId);
+ mStackedVoice.setImageResource(mStackedVoiceId);
+ mMobileSingleGroup.setVisibility(View.GONE);
+ mMobileStackedGroup.setVisibility(View.VISIBLE);
+ } else {
+ mStackedData.setImageResource(0);
+ mStackedVoice.setImageResource(0);
+ mMobileSingleGroup.setVisibility(View.VISIBLE);
+ mMobileStackedGroup.setVisibility(View.GONE);
+ }
+
mMobileGroup.setContentDescription(mMobileTypeDescription
+ " " + mMobileDescription);
mMobileGroup.setVisibility(View.VISIBLE);
@@ -546,6 +654,8 @@
(mMobileVisible ? "VISIBLE" : "GONE"), mMobileStrengthId, mMobileTypeId));
mMobileType.setVisibility(mMobileTypeId != 0 ? View.VISIBLE : View.GONE);
+ mDataActivity.setVisibility(mDataActivityId != 0 ? View.VISIBLE : View.GONE);
+ mMobileActivity.setVisibility(mMobileActivityId != 0 ? View.VISIBLE : View.GONE);
return mMobileVisible;
}
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/phone/PhoneStatusBar.java b/packages/SystemUI/src/com/android/systemui/statusbar/phone/PhoneStatusBar.java
index a661ae6..0418dbd 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/phone/PhoneStatusBar.java
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/phone/PhoneStatusBar.java
@@ -82,6 +82,7 @@
import android.view.VelocityTracker;
import android.view.View;
import android.view.ViewGroup.LayoutParams;
+import android.view.ViewGroup.MarginLayoutParams;
import android.view.ViewStub;
import android.view.WindowManager;
import android.view.WindowManagerGlobal;
@@ -290,6 +291,8 @@
StatusBarIconController mIconController;
+ private View mCarrierText = null;
+
// expanded notifications
NotificationPanelView mNotificationPanel; // the sliding/resizing panel within the notification window
View mExpandedContents;
@@ -312,6 +315,9 @@
int mKeyguardMaxNotificationCount;
+ // carrier label
+ private TextView mCarrierLabel;
+ private boolean mShowCarrierInPanel = false;
boolean mExpandedVisible;
private int mNavigationBarWindowState = WINDOW_STATE_SHOWING;
@@ -722,6 +728,10 @@
// figure out which pixel-format to use for the status bar.
mPixelFormat = PixelFormat.OPAQUE;
+ if (mContext.getResources().getBoolean(R.bool.enable_operator_name)) {
+ mCarrierText = mStatusBarView.findViewById(R.id.status_carrier_text);
+ }
+
mStackScroller = (NotificationStackScrollLayout) mStatusBarWindow.findViewById(
R.id.notification_stack_scroller);
mStackScroller.setLongPressListener(getNotificationLongClicker());
@@ -843,6 +853,23 @@
mNetworkController.addEmergencyListener(mHeader);
}
+ mCarrierLabel = (TextView)mStatusBarWindow.findViewById(R.id.carrier_label);
+ final boolean showCarrierLabel = mContext.getResources().getBoolean(
+ R.bool.config_showCarrierLabel);
+ mShowCarrierInPanel = showCarrierLabel && (mCarrierLabel != null);
+ if (DEBUG) Log.v(TAG, "carrierlabel=" + mCarrierLabel + " show=" + mShowCarrierInPanel);
+ if (mShowCarrierInPanel) {
+ mCarrierLabel.setVisibility(mShowCarrierInPanel ? View.VISIBLE : View.INVISIBLE);
+ }
+
+ // make sure carrier label is not covered by navigation bar
+ if (mCarrierLabel != null && mNavigationBarView != null) {
+ MarginLayoutParams mlp = (MarginLayoutParams) mCarrierLabel.getLayoutParams();
+ if (mlp != null && mlp.bottomMargin < mNavigationBarView.mBarSize) {
+ mlp.bottomMargin = mNavigationBarView.mBarSize;
+ mCarrierLabel.setLayoutParams(mlp);
+ }
+ }
mFlashlightController = new FlashlightController(mContext);
mKeyguardBottomArea.setFlashlightController(mFlashlightController);
mKeyguardBottomArea.setPhoneStatusBar(this);
@@ -1461,6 +1488,21 @@
updateNotificationShade();
mIconController.updateNotificationIcons(mNotificationData);
+
+ if (mContext.getResources().getBoolean(R.bool.enable_operator_name)
+ && mCarrierText != null) {
+ if (mState == StatusBarState.KEYGUARD || mState == StatusBarState.SHADE_LOCKED) {
+ mCarrierText.setVisibility(View.GONE);
+ } else {
+ ArrayList<Entry> activeNotifications = mNotificationData.getActiveNotifications();
+ final int N = activeNotifications.size();
+ if (N > 0) {
+ mCarrierText.setVisibility(View.GONE);
+ } else {
+ mCarrierText.setVisibility(View.VISIBLE);
+ }
+ }
+ }
}
@Override
@@ -1469,6 +1511,21 @@
mNotificationPanel.notifyVisibleChildrenChanged();
}
+ protected void updateCarrierLabelVisibility() {
+ if (!mShowCarrierInPanel) return;
+
+ final boolean makeVisible = mStackScroller.getVisibility() == View.VISIBLE
+ && mState != StatusBarState.KEYGUARD;
+
+ if ((mCarrierLabel.getVisibility() == View.VISIBLE) != makeVisible) {
+ if (DEBUG) {
+ Log.d(TAG, "making carrier label " + (makeVisible?"visible":"invisible"));
+ }
+
+ mCarrierLabel.setVisibility(makeVisible ? View.VISIBLE : View.INVISIBLE);
+ }
+ }
+
@Override
protected void setAreThereNotifications() {
@@ -3552,6 +3609,7 @@
updateStackScrollerState(goingToFullShade);
updateNotifications();
checkBarModes();
+ updateCarrierLabelVisibility();
updateMediaMetaData(false);
mKeyguardMonitor.notifyKeyguardState(mStatusBarKeyguardViewManager.isShowing(),
mStatusBarKeyguardViewManager.isSecure());
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/policy/CallbackHandler.java b/packages/SystemUI/src/com/android/systemui/statusbar/policy/CallbackHandler.java
index e618cb8..69f8846 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/policy/CallbackHandler.java
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/policy/CallbackHandler.java
@@ -124,16 +124,19 @@
@Override
public void setMobileDataIndicators(final IconState statusIcon, final IconState qsIcon,
- final int statusType, final int qsType,final boolean activityIn,
- final boolean activityOut, final String typeContentDescription,
- final String description, final boolean isWide, final int subId) {
+ final int statusType, final int qsType, final boolean activityIn,
+ final boolean activityOut, final int dataActivityId, final int mobileActivityId,
+ final int stackedDataIcon, final int stackedVoiceIcon,
+ final String typeContentDescription, final String description, final boolean isWide,
+ final int subId) {
post(new Runnable() {
@Override
public void run() {
for (SignalCallback signalCluster : mSignalCallbacks) {
signalCluster.setMobileDataIndicators(statusIcon, qsIcon, statusType, qsType,
- activityIn, activityOut, typeContentDescription, description, isWide,
- subId);
+ activityIn, activityOut, dataActivityId, mobileActivityId,
+ stackedDataIcon, stackedVoiceIcon,
+ typeContentDescription, description, isWide, subId);
}
}
});
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/policy/MobileSignalController.java b/packages/SystemUI/src/com/android/systemui/statusbar/policy/MobileSignalController.java
index b0eaab0..62f1ec4 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/policy/MobileSignalController.java
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/policy/MobileSignalController.java
@@ -17,6 +17,7 @@
import android.content.Context;
import android.content.Intent;
+import android.content.res.Resources;
import android.net.NetworkCapabilities;
import android.os.Looper;
import android.telephony.PhoneStateListener;
@@ -66,6 +67,12 @@
private MobileIconGroup mDefaultIcons;
private Config mConfig;
+ private final int STATUS_BAR_STYLE_ANDROID_DEFAULT = 0;
+ private final int STATUS_BAR_STYLE_CDMA_1X_COMBINED = 1;
+ private final int STATUS_BAR_STYLE_DEFAULT_DATA = 2;
+ private final int STATUS_BAR_STYLE_DATA_VOICE = 3;
+ private int mStyle = STATUS_BAR_STYLE_ANDROID_DEFAULT;
+
// TODO: Reduce number of vars passed in, if we have the NetworkController, probably don't
// need listener lists anymore.
public MobileSignalController(Context context, Config config, boolean hasMobileData,
@@ -86,7 +93,14 @@
mNetworkNameDefault = getStringIfExists(
com.android.internal.R.string.lockscreen_carrier_default);
- mapIconSets();
+ if (config.readIconsFromXml) {
+ TelephonyIcons.readIconsFromXml(context);
+ mDefaultIcons = !mConfig.showAtLeast3G ? TelephonyIcons.G : TelephonyIcons.THREE_G;
+ } else {
+ mapIconSets();
+ }
+
+ mStyle = context.getResources().getInteger(R.integer.status_bar_style);
String networkName = info.getCarrierName() != null ? info.getCarrierName().toString()
: mNetworkNameDefault;
@@ -100,7 +114,9 @@
public void setConfiguration(Config config) {
mConfig = config;
- mapIconSets();
+ if (!config.readIconsFromXml) {
+ mapIconSets();
+ }
updateTelephony();
}
@@ -203,6 +219,9 @@
@Override
public void notifyListeners() {
+ if (mConfig.readIconsFromXml) {
+ generateIconGroup();
+ }
MobileIconGroup icons = getIcons();
String contentDescription = getStringIfExists(getContentDescription());
@@ -232,9 +251,14 @@
&& mCurrentState.activityOut;
showDataIcon &= mCurrentState.isDefault
|| mCurrentState.iconGroup == TelephonyIcons.ROAMING;
+ showDataIcon &= mStyle == STATUS_BAR_STYLE_ANDROID_DEFAULT;
int typeIcon = showDataIcon ? icons.mDataType : 0;
+ int dataActivityId = showMobileActivity() ? 0 : icons.mActivityId;
+ int mobileActivityId = showMobileActivity() ? icons.mActivityId : 0;
mCallbackHandler.setMobileDataIndicators(statusIcon, qsIcon, typeIcon, qsTypeIcon,
- activityIn, activityOut, dataContentDescription, description, icons.mIsWide,
+ activityIn, activityOut, dataActivityId, mobileActivityId,
+ icons.mStackedDataIcon, icons.mStackedVoiceIcon,
+ dataContentDescription, description, icons.mIsWide,
mSubscriptionInfo.getSubscriptionId());
}
@@ -243,6 +267,15 @@
return new MobileState();
}
+ @Override
+ public int getCurrentIconId() {
+ if (mConfig.readIconsFromXml && mCurrentState.connected) {
+ return getIcons().mSingleSignalIcon;
+ } else {
+ return super.getCurrentIconId();
+ }
+ }
+
private boolean hasService() {
if (mServiceState != null) {
// Consider the device to be in service if either voice or data
@@ -366,7 +399,7 @@
*/
private final void updateTelephony() {
if (DEBUG) {
- Log.d(mTag, "updateTelephonySignalStrength: hasService=" + hasService()
+ Log.d(mTag, "updateTelephony: hasService=" + hasService()
+ " ss=" + mSignalStrength);
}
mCurrentState.connected = hasService() && mSignalStrength != null;
@@ -375,6 +408,13 @@
mCurrentState.level = mSignalStrength.getCdmaLevel();
} else {
mCurrentState.level = mSignalStrength.getLevel();
+ if (mConfig.showRsrpSignalLevelforLTE) {
+ int dataType = mServiceState.getDataNetworkType();
+ if (dataType == TelephonyManager.NETWORK_TYPE_LTE ||
+ dataType == TelephonyManager.NETWORK_TYPE_LTE_CA) {
+ mCurrentState.level = getAlternateLteLevel(mSignalStrength);
+ }
+ }
}
}
if (mNetworkToIconLookup.indexOfKey(mDataNetType) >= 0) {
@@ -400,15 +440,225 @@
mCurrentState.networkName = mServiceState.getOperatorAlphaShort();
}
+ if (mConfig.readIconsFromXml) {
+ mCurrentState.voiceLevel = getVoiceSignalLevel();
+ }
+
notifyListenersIfNecessary();
}
+ private void generateIconGroup() {
+ final int level = mCurrentState.level;
+ final int voiceLevel = mCurrentState.voiceLevel;
+ final int inet = mCurrentState.inetCondition;
+ final boolean dataConnected = mCurrentState.dataConnected;
+ final boolean roaming = isRoaming();
+ final int voiceType = getVoiceNetworkType();
+ final int dataType = getDataNetworkType();
+
+ int[][] sbIcons = TelephonyIcons.TELEPHONY_SIGNAL_STRENGTH;
+ int[][] qsIcons = TelephonyIcons.QS_TELEPHONY_SIGNAL_STRENGTH;
+ int[] contentDesc = AccessibilityContentDescriptions.PHONE_SIGNAL_STRENGTH;
+ int sbDiscState = TelephonyIcons.TELEPHONY_NO_NETWORK;
+ int qsDiscState = TelephonyIcons.QS_TELEPHONY_NO_NETWORK;
+ int discContentDesc = AccessibilityContentDescriptions.PHONE_SIGNAL_STRENGTH[0];
+ int dataContentDesc, dataTypeIcon, qsDataTypeIcon, dataActivityId;
+ int singleSignalIcon, stackedDataIcon = 0, stackedVoiceIcon = 0;
+
+ final int slotId = getSimSlotIndex();
+ if (slotId < 0 || slotId > mPhone.getPhoneCount()) {
+ Log.e(mTag, "generateIconGroup invalid slotId:" + slotId);
+ return;
+ }
+
+ if (DEBUG) Log.d(mTag, "generateIconGroup slot:" + slotId + " style:" + mStyle
+ + " connected:" + mCurrentState.connected + " inetCondition:" + inet
+ + " roaming:" + roaming + " level:" + level + " voiceLevel:" + voiceLevel
+ + " dataConnected:" + dataConnected
+ + " dataActivity:" + mCurrentState.dataActivity
+ + " CS:" + voiceType
+ + "/" + TelephonyManager.getNetworkTypeName(voiceType)
+ + ", PS:" + dataType
+ + "/" + TelephonyManager.getNetworkTypeName(dataType));
+
+ // Update data icon set
+ int chosenNetworkType = ((dataType == TelephonyManager.NETWORK_TYPE_UNKNOWN)
+ ? voiceType : dataType);
+ TelephonyIcons.updateDataType(slotId, chosenNetworkType, mConfig.showAtLeast3G,
+ mConfig.show4gForLte, mConfig.hspaDataDistinguishable, inet);
+
+ // Update signal strength icons
+ singleSignalIcon = TelephonyIcons.getSignalStrengthIcon(slotId, inet, level, roaming);
+ if (DEBUG) {
+ Log.d(mTag, "singleSignalIcon:" + getResourceName(singleSignalIcon));
+ }
+
+ dataActivityId = (mCurrentState.dataConnected && slotId >= 0) ?
+ TelephonyIcons.getDataActivity(slotId, mCurrentState.dataActivity) : 0;
+
+ // Convert the icon to unstacked if necessary.
+ int unstackedSignalIcon = TelephonyIcons.convertMobileStrengthIcon(singleSignalIcon);
+ if (DEBUG) {
+ Log.d(mTag, "unstackedSignalIcon:" + getResourceName(unstackedSignalIcon));
+ }
+ if (singleSignalIcon != unstackedSignalIcon) {
+ stackedDataIcon = singleSignalIcon;
+ singleSignalIcon = unstackedSignalIcon;
+ }
+
+ if (mStyle == STATUS_BAR_STYLE_CDMA_1X_COMBINED) {
+ if (!roaming && showDataAndVoice()) {
+ stackedVoiceIcon = TelephonyIcons.getStackedVoiceIcon(voiceLevel);
+ } else if (roaming && dataActivityId != 0) {
+ // Remove data type indicator if already shown in data activity icon.
+ singleSignalIcon = TelephonyIcons.getRoamingSignalIconId(level, inet);
+ }
+ }
+
+ // Clear satcked data icon if no satcked voice icon.
+ if (stackedVoiceIcon == 0) stackedDataIcon = 0;
+
+ contentDesc = TelephonyIcons.getSignalStrengthDes(slotId);
+ sbDiscState = TelephonyIcons.getSignalNullIcon(slotId);
+ if (DEBUG) {
+ Log.d(mTag, "singleSignalIcon=" + getResourceName(singleSignalIcon)
+ + " dataActivityId=" + getResourceName(dataActivityId)
+ + " stackedDataIcon=" + getResourceName(stackedDataIcon)
+ + " stackedVoiceIcon=" + getResourceName(stackedVoiceIcon));
+ }
+
+ // Update data net type icons
+ if (dataType == TelephonyManager.NETWORK_TYPE_IWLAN) {
+ // wimax is a special 4g network not handled by telephony
+ dataTypeIcon = TelephonyIcons.ICON_4G;
+ qsDataTypeIcon = TelephonyIcons.QS_DATA_4G;
+ dataContentDesc = R.string.accessibility_data_connection_4g;
+ } else {
+ dataTypeIcon = TelephonyIcons.getDataTypeIcon(slotId);
+ dataContentDesc = TelephonyIcons.getDataTypeDesc(slotId);
+ qsDataTypeIcon = TelephonyIcons.getQSDataTypeIcon(slotId);
+ }
+ if (roaming) {
+ dataTypeIcon = TelephonyIcons.ROAMING_ICON;
+ qsDataTypeIcon = TelephonyIcons.QS_DATA_R;
+ }
+ if (DEBUG) {
+ Log.d(mTag, "updateDataNetType, dataTypeIcon=" + getResourceName(dataTypeIcon)
+ + " qsDataTypeIcon=" + getResourceName(qsDataTypeIcon)
+ + " dataContentDesc=" + dataContentDesc);
+ }
+ mCurrentState.iconGroup = new MobileIconGroup(
+ TelephonyManager.getNetworkTypeName(dataType),
+ sbIcons, qsIcons, contentDesc, 0, 0, sbDiscState, qsDiscState, discContentDesc,
+ dataContentDesc, dataTypeIcon, false, qsDataTypeIcon,
+ singleSignalIcon, stackedDataIcon, stackedVoiceIcon, dataActivityId);
+ }
+
+ private int getSimSlotIndex() {
+ int slotId = -1;
+ if (mSubscriptionInfo != null) {
+ slotId = mSubscriptionInfo.getSimSlotIndex();
+ }
+ if (DEBUG) Log.d(mTag, "getSimSlotIndex, slotId: " + slotId);
+ return slotId;
+ }
+
+ private boolean showMobileActivity() {
+ return (mStyle == STATUS_BAR_STYLE_DEFAULT_DATA)
+ || (mStyle == STATUS_BAR_STYLE_ANDROID_DEFAULT);
+ }
+
+ private int getVoiceNetworkType() {
+ if (mServiceState == null) {
+ return TelephonyManager.NETWORK_TYPE_UNKNOWN;
+ }
+ return mServiceState.getVoiceNetworkType();
+ }
+
+ private int getDataNetworkType() {
+ if (mServiceState == null) {
+ return TelephonyManager.NETWORK_TYPE_UNKNOWN;
+ }
+ return mServiceState.getDataNetworkType();
+ }
+
+ private int getVoiceSignalLevel() {
+ if (mSignalStrength == null) {
+ return SignalStrength.SIGNAL_STRENGTH_NONE_OR_UNKNOWN;
+ }
+ boolean isCdma = TelephonyManager.PHONE_TYPE_CDMA == TelephonyManager.getDefault()
+ .getCurrentPhoneType(mSubscriptionInfo.getSubscriptionId());
+ return isCdma ? mSignalStrength.getCdmaLevel() : mSignalStrength.getGsmLevel();
+ }
+
+ private boolean showDataAndVoice() {
+ if (mStyle != STATUS_BAR_STYLE_CDMA_1X_COMBINED) {
+ return false;
+ }
+ int dataType = getDataNetworkType();
+ int voiceType = getVoiceNetworkType();
+ if ((dataType == TelephonyManager.NETWORK_TYPE_EVDO_0
+ || dataType == TelephonyManager.NETWORK_TYPE_EVDO_0
+ || dataType == TelephonyManager.NETWORK_TYPE_EVDO_A
+ || dataType == TelephonyManager.NETWORK_TYPE_EVDO_B
+ || dataType == TelephonyManager.NETWORK_TYPE_EHRPD
+ || dataType == TelephonyManager.NETWORK_TYPE_LTE
+ || dataType == TelephonyManager.NETWORK_TYPE_LTE_CA)
+ && (voiceType == TelephonyManager.NETWORK_TYPE_GSM
+ || voiceType == TelephonyManager.NETWORK_TYPE_1xRTT
+ || voiceType == TelephonyManager.NETWORK_TYPE_CDMA)) {
+ return true;
+ }
+ return false;
+ }
+
+ private boolean show1xOnly() {
+ int dataType = getDataNetworkType();
+ int voiceType = getVoiceNetworkType();
+ if (dataType == TelephonyManager.NETWORK_TYPE_1xRTT
+ || dataType == TelephonyManager.NETWORK_TYPE_CDMA) {
+ return true;
+ }
+ return false;
+ }
+
+ private int getAlternateLteLevel(SignalStrength signalStrength) {
+ int lteRsrp = signalStrength.getLteDbm();
+ int rsrpLevel = SignalStrength.SIGNAL_STRENGTH_NONE_OR_UNKNOWN;
+ if (lteRsrp > -44) rsrpLevel = SignalStrength.SIGNAL_STRENGTH_NONE_OR_UNKNOWN;
+ else if (lteRsrp >= -97) rsrpLevel = SignalStrength.SIGNAL_STRENGTH_GREAT;
+ else if (lteRsrp >= -105) rsrpLevel = SignalStrength.SIGNAL_STRENGTH_GOOD;
+ else if (lteRsrp >= -113) rsrpLevel = SignalStrength.SIGNAL_STRENGTH_MODERATE;
+ else if (lteRsrp >= -120) rsrpLevel = SignalStrength.SIGNAL_STRENGTH_POOR;
+ else if (lteRsrp >= -140) rsrpLevel = SignalStrength.SIGNAL_STRENGTH_NONE_OR_UNKNOWN;
+ if (DEBUG) {
+ Log.d(mTag, "getAlternateLteLevel lteRsrp:" + lteRsrp + " rsrpLevel = " + rsrpLevel);
+ }
+ return rsrpLevel;
+ }
+
+ protected String getResourceName(int resId) {
+ if (resId != 0) {
+ final Resources res = mContext.getResources();
+ try {
+ return res.getResourceName(resId);
+ } catch (android.content.res.Resources.NotFoundException ex) {
+ return "(unknown)";
+ }
+ } else {
+ return "(null)";
+ }
+ }
+
@VisibleForTesting
void setActivity(int activity) {
mCurrentState.activityIn = activity == TelephonyManager.DATA_ACTIVITY_INOUT
|| activity == TelephonyManager.DATA_ACTIVITY_IN;
mCurrentState.activityOut = activity == TelephonyManager.DATA_ACTIVITY_INOUT
|| activity == TelephonyManager.DATA_ACTIVITY_OUT;
+ if (mConfig.readIconsFromXml) {
+ mCurrentState.dataActivity = activity;
+ }
notifyListenersIfNecessary();
}
@@ -482,17 +732,35 @@
final int mDataType;
final boolean mIsWide;
final int mQsDataType;
+ final int mSingleSignalIcon;
+ final int mStackedDataIcon;
+ final int mStackedVoiceIcon;
+ final int mActivityId;
public MobileIconGroup(String name, int[][] sbIcons, int[][] qsIcons, int[] contentDesc,
int sbNullState, int qsNullState, int sbDiscState, int qsDiscState,
int discContentDesc, int dataContentDesc, int dataType, boolean isWide,
int qsDataType) {
+ this(name, sbIcons, qsIcons, contentDesc, sbNullState, qsNullState, sbDiscState,
+ qsDiscState, discContentDesc, dataContentDesc, dataType, isWide,
+ qsDataType, 0, 0, 0, 0);
+ }
+
+ public MobileIconGroup(String name, int[][] sbIcons, int[][] qsIcons, int[] contentDesc,
+ int sbNullState, int qsNullState, int sbDiscState, int qsDiscState,
+ int discContentDesc, int dataContentDesc, int dataType, boolean isWide,
+ int qsDataType, int singleSignalIcon, int stackedDataIcon,
+ int stackedVoicelIcon, int activityId) {
super(name, sbIcons, qsIcons, contentDesc, sbNullState, qsNullState, sbDiscState,
qsDiscState, discContentDesc);
mDataContentDescription = dataContentDesc;
mDataType = dataType;
mIsWide = isWide;
mQsDataType = qsDataType;
+ mSingleSignalIcon = singleSignalIcon;
+ mStackedDataIcon = stackedDataIcon;
+ mStackedVoiceIcon = stackedVoicelIcon;
+ mActivityId = activityId;
}
}
@@ -505,6 +773,8 @@
boolean airplaneMode;
boolean carrierNetworkChangeMode;
boolean isDefault;
+ int dataActivity;
+ int voiceLevel;
@Override
public void copyFrom(State s) {
@@ -518,6 +788,8 @@
isEmergency = state.isEmergency;
airplaneMode = state.airplaneMode;
carrierNetworkChangeMode = state.carrierNetworkChangeMode;
+ dataActivity = state.dataActivity;
+ voiceLevel = state.voiceLevel;
}
@Override
@@ -531,6 +803,7 @@
builder.append("isDefault=").append(isDefault).append(',');
builder.append("isEmergency=").append(isEmergency).append(',');
builder.append("airplaneMode=").append(airplaneMode).append(',');
+ builder.append("voiceLevel=").append(voiceLevel).append(',');
builder.append("carrierNetworkChangeMode=").append(carrierNetworkChangeMode);
}
@@ -544,6 +817,7 @@
&& ((MobileState) o).isEmergency == isEmergency
&& ((MobileState) o).airplaneMode == airplaneMode
&& ((MobileState) o).carrierNetworkChangeMode == carrierNetworkChangeMode
+ && ((MobileState) o).voiceLevel == voiceLevel
&& ((MobileState) o).isDefault == isDefault;
}
}
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/policy/NetworkController.java b/packages/SystemUI/src/com/android/systemui/statusbar/policy/NetworkController.java
index 38656ee..4b30eb1 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/policy/NetworkController.java
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/policy/NetworkController.java
@@ -39,8 +39,10 @@
boolean activityIn, boolean activityOut, String description);
void setMobileDataIndicators(IconState statusIcon, IconState qsIcon, int statusType,
- int qsType, boolean activityIn, boolean activityOut, String typeContentDescription,
- String description, boolean isWide, int subId);
+ int qsType, boolean activityIn, boolean activityOut, int dataActivityId,
+ int mobileActivityId, int stackedDataIcon, int stackedVoiceIcon,
+ String typeContentDescription, String description,
+ boolean isWide, int subId);
void setSubs(List<SubscriptionInfo> subs);
void setNoSims(boolean show);
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/policy/NetworkControllerImpl.java b/packages/SystemUI/src/com/android/systemui/statusbar/policy/NetworkControllerImpl.java
index 37c570e..9008e51 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/policy/NetworkControllerImpl.java
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/policy/NetworkControllerImpl.java
@@ -826,6 +826,8 @@
boolean alwaysShowCdmaRssi = false;
boolean show4gForLte = false;
boolean hspaDataDistinguishable;
+ boolean readIconsFromXml;
+ boolean showRsrpSignalLevelforLTE;
static Config readConfig(Context context) {
Config config = new Config();
@@ -837,6 +839,9 @@
config.show4gForLte = res.getBoolean(R.bool.config_show4GForLTE);
config.hspaDataDistinguishable =
res.getBoolean(R.bool.config_hspa_data_distinguishable);
+ config.readIconsFromXml = res.getBoolean(R.bool.config_read_icons_from_xml);
+ config.showRsrpSignalLevelforLTE =
+ res.getBoolean(R.bool.config_showRsrpSignalLevelforLTE);
return config;
}
}
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/policy/SignalCallbackAdapter.java b/packages/SystemUI/src/com/android/systemui/statusbar/policy/SignalCallbackAdapter.java
index dce889f..511ad2b 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/policy/SignalCallbackAdapter.java
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/policy/SignalCallbackAdapter.java
@@ -36,8 +36,9 @@
@Override
public void setMobileDataIndicators(IconState statusIcon, IconState qsIcon, int statusType,
- int qsType, boolean activityIn, boolean activityOut, String typeContentDescription,
- String description, boolean isWide, int subId) {
+ int qsType, boolean activityIn, boolean activityOut, int dataActivity,
+ int mobileActivity, int stackedDataIcon, int stackedVoiceIcon,
+ String typeContentDescription, String description, boolean isWide, int subId) {
}
@Override
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/policy/TelephonyIcons.java b/packages/SystemUI/src/com/android/systemui/statusbar/policy/TelephonyIcons.java
index 68f8191..2c9f2b9 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/policy/TelephonyIcons.java
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/policy/TelephonyIcons.java
@@ -1,4 +1,6 @@
/*
+ * Copyright (c) 2015, The Linux Foundation. All rights reserved.
+ * Not a Contribution.
* Copyright (C) 2008 The Android Open Source Project
*
* Licensed under the Apache License, Version 2.0 (the "License");
@@ -16,6 +18,14 @@
package com.android.systemui.statusbar.policy;
+import android.content.Context;
+import android.content.res.Resources;
+import android.content.res.TypedArray;
+import android.telephony.SignalStrength;
+import android.telephony.TelephonyManager;
+import android.util.Log;
+import android.util.SparseArray;
+
import com.android.systemui.R;
import com.android.systemui.statusbar.policy.MobileSignalController.MobileIconGroup;
@@ -68,6 +78,20 @@
R.drawable.stat_sys_signal_4_fully }
};
+ //Default roaming icons with R indicator
+ static final int[][] TELEPHONY_SIGNAL_STRENGTH_ROAMING_R = {
+ { R.drawable.stat_sys_signal_0_default_roam,
+ R.drawable.stat_sys_signal_1_default_roam,
+ R.drawable.stat_sys_signal_2_default_roam,
+ R.drawable.stat_sys_signal_3_default_roam,
+ R.drawable.stat_sys_signal_4_default_roam },
+ { R.drawable.stat_sys_signal_0_default_fully_roam,
+ R.drawable.stat_sys_signal_1_default_fully_roam,
+ R.drawable.stat_sys_signal_2_default_fully_roam,
+ R.drawable.stat_sys_signal_3_default_fully_roam,
+ R.drawable.stat_sys_signal_4_default_fully_roam }
+ };
+
//CarrierNetworkChange
static final int[][] TELEPHONY_CARRIER_NETWORK_CHANGE = {
{ R.drawable.stat_sys_signal_carrier_network_change_animation,
@@ -229,6 +253,403 @@
static final int QS_ICON_1X = R.drawable.ic_qs_signal_1x;
static final int QS_ICON_CARRIER_NETWORK_CHANGE =
R.drawable.ic_qs_signal_carrier_network_change_animation;
+ static final int DATA_TYPE_UNKNOWN = 0;
+ static final int DATA_TYPE_G = 1;
+ static final int DATA_TYPE_E = 2;
+ static final int DATA_TYPE_2G = 3;
+ static final int DATA_TYPE_3G = 4;
+ static final int DATA_TYPE_4G = 5;
+ static final int DATA_TYPE_H = 6;
+ static final int DATA_TYPE_HP = 7;
+ static final int DATA_TYPE_1X = 8;
+ static final int DATA_TYPE_LTE = 9;
+
+ static final int SIGNAL_STRENGTH_TYPE_G = 0;
+ static final int SIGNAL_STRENGTH_TYPE_E = 1;
+ static final int SIGNAL_STRENGTH_TYPE_3G = 2;
+ static final int SIGNAL_STRENGTH_TYPE_4G = 3;
+ static final int SIGNAL_STRENGTH_TYPE_H = 4;
+ static final int SIGNAL_STRENGTH_TYPE_HP = 5;
+ static final int SIGNAL_STRENGTH_TYPE_1X = 6;
+ static final int SIGNAL_STRENGTH_TYPE_CDMA = 7;
+ static final int SIGNAL_STRENGTH_TYPE_UMTS = 8;
+
+ static final boolean DEBUG = true;
+ static final int DEFAULT_SUB = 0;
+ static final int INET_TYPE_NUM = 2;
+ static final int SIGNAL_LEVEL_NUM = SignalStrength.NUM_SIGNAL_STRENGTH_BINS;
+ static final String TAG = "TelephonyIcons";
+ static final String NS = "com.android.systemui";
+
+ static String[] mDataTypeArray, mDataTypeGenerationArray;
+ static String[] mDataTypeDescriptionArray, mDataTypeGenerationDescArray;
+ static String[] mDataActivityArray;
+ static String[] mSignalStrengthArray, mSignalStrengthRoamingArray;
+ static String[] mSignalNullArray;
+ static String[] mSignalStrengthDesc;
+
+ static int[] mSelectedDataTypeIcon;
+ static int[] mSelectedQSDataTypeIcon;
+ static String[] mSelectedDataTypeDesc;
+ static int[] mSelectedDataActivityIndex;
+ static int[] mSelectedSignalStreagthIndex;
+ static SparseArray<Integer> mStacked2SingleIconLookup;
+
+ private static Resources mRes;
+ private static boolean isInitiated = false;
+
+ static void readIconsFromXml(Context context) {
+ if (isInitiated) {
+ log(TAG, "readIconsFromXml, already read!");
+ return;
+ }
+
+ mRes = context.getResources();
+ try {
+ mDataTypeArray = mRes.getStringArray(R.array.multi_data_type);
+ mDataTypeDescriptionArray = mRes.getStringArray(
+ R.array.telephony_data_type_description);
+ mDataTypeGenerationArray = mRes.getStringArray(
+ R.array.telephony_data_type_generation);
+ mDataTypeGenerationDescArray = mRes.getStringArray(
+ R.array.telephony_data_type_generation_description);
+ mDataActivityArray = mRes.getStringArray(R.array.multi_data_activity);
+ mSignalStrengthArray = mRes.getStringArray(R.array.multi_signal_strength);
+ mSignalStrengthRoamingArray = mRes.getStringArray(
+ R.array.multi_signal_strength_roaming);
+ mSignalNullArray = mRes.getStringArray(R.array.multi_signal_null);
+ mSignalStrengthDesc = mRes.getStringArray(R.array.signal_strength_description);
+ initStacked2SingleIconLookup();
+ } catch (android.content.res.Resources.NotFoundException e) {
+ isInitiated = false;
+ log(TAG, "readIconsFromXml, exception happened: " + e);
+ return;
+ }
+
+ if (mSelectedDataTypeIcon == null
+ && mDataTypeArray.length != 0) {
+ mSelectedDataTypeIcon = new int[mDataTypeArray.length];
+ }
+ if (mSelectedQSDataTypeIcon == null
+ && mDataTypeArray.length != 0) {
+ mSelectedQSDataTypeIcon = new int[mDataTypeArray.length];
+ }
+ if (mSelectedDataTypeDesc == null
+ && mDataTypeArray.length != 0) {
+ mSelectedDataTypeDesc = new String[mDataTypeArray.length];
+ }
+ if (mSelectedDataActivityIndex == null
+ && mDataActivityArray.length != 0) {
+ mSelectedDataActivityIndex = new int[mDataActivityArray.length];
+ }
+ if (mSelectedSignalStreagthIndex == null
+ && mSignalStrengthArray.length != 0) {
+ mSelectedSignalStreagthIndex = new int[mSignalStrengthArray.length];
+ }
+ isInitiated = true;
+ }
+
+ static void initStacked2SingleIconLookup() {
+ mStacked2SingleIconLookup = new SparseArray<>();
+ TypedArray stackedIcons = mRes.obtainTypedArray(R.array.stacked_signal_icons);
+ TypedArray singleIcons = mRes.obtainTypedArray(R.array.single_signal_icons);
+
+ mStacked2SingleIconLookup.clear();
+ for (int i = 0; i < stackedIcons.length() && i < singleIcons.length(); i++) {
+ mStacked2SingleIconLookup.put(stackedIcons.getResourceId(i,0),
+ singleIcons.getResourceId(i,0));
+ }
+ stackedIcons.recycle();
+ singleIcons.recycle();
+ log(TAG, "initStacked2SingleIconLookup: size=" + mStacked2SingleIconLookup.size());
+ }
+
+ static int getSignalNullIcon(int slot) {
+ if (mSignalNullArray == null) {
+ return 0;
+ }
+ String resName = mSignalNullArray[slot];
+ log(TAG, "null signal icon name: " + resName);
+ int resId = mRes.getIdentifier(resName, null, NS);
+ return resId;
+ }
+
+ static void updateDataType(int slot, int type, boolean showAtLeast3G,
+ boolean show4GforLte, boolean hspaDistinguishable, int inet) {
+ log(TAG, "updateDataType "
+ + String.format("slot=%d, type=%d, inetCondition=%d",
+ slot, type, inet)
+ + " showAtLeast3G=" + String.valueOf(showAtLeast3G)
+ + " show4GforLte=" + String.valueOf(show4GforLte)
+ + " hspaDistinguishable=" + String.valueOf(hspaDistinguishable));
+
+ String resName = mDataTypeArray[slot];
+ int resId = mRes.getIdentifier(resName, null, NS);
+ String[] dataTypeArray = mRes.getStringArray(resId);
+
+ log(TAG, "data type item name: " + resName + " id:" + resId);
+
+ switch (type) {
+ case TelephonyManager.NETWORK_TYPE_UNKNOWN:
+ if (!showAtLeast3G) {
+ mSelectedDataTypeIcon[slot] = mRes.getIdentifier(
+ dataTypeArray[type], null, NS);
+ mSelectedQSDataTypeIcon[slot] = 0;
+ mSelectedDataTypeDesc[slot] = mDataTypeDescriptionArray[type];
+ mSelectedDataActivityIndex[slot] = 0;
+ mSelectedSignalStreagthIndex[slot] = 0;
+ break;
+ } else {
+ // fall through
+ }
+ case TelephonyManager.NETWORK_TYPE_EDGE:
+ if (!showAtLeast3G) {
+ mSelectedDataTypeIcon[slot] = mRes.getIdentifier(
+ dataTypeArray[type], null, NS);
+ mSelectedQSDataTypeIcon[slot] = QS_DATA_E;
+ mSelectedDataTypeDesc[slot] = mDataTypeDescriptionArray[type];
+ mSelectedDataActivityIndex[slot] = DATA_TYPE_E;
+ mSelectedSignalStreagthIndex[slot] = SIGNAL_STRENGTH_TYPE_E;
+ break;
+ } else {
+ // fall through
+ }
+ case TelephonyManager.NETWORK_TYPE_UMTS:
+ case TelephonyManager.NETWORK_TYPE_TD_SCDMA:
+ mSelectedDataActivityIndex[slot] = DATA_TYPE_3G;
+ mSelectedDataTypeIcon[slot] = mRes.getIdentifier(
+ dataTypeArray[type], null, NS);
+ mSelectedQSDataTypeIcon[slot] = QS_DATA_3G;
+ mSelectedDataTypeDesc[slot] = mDataTypeDescriptionArray[type];
+ mSelectedSignalStreagthIndex[slot] = SIGNAL_STRENGTH_TYPE_UMTS;
+ break;
+ case TelephonyManager.NETWORK_TYPE_HSDPA:
+ case TelephonyManager.NETWORK_TYPE_HSUPA:
+ case TelephonyManager.NETWORK_TYPE_HSPA:
+ if (hspaDistinguishable) {
+ mSelectedDataActivityIndex[slot] = DATA_TYPE_H;
+ mSelectedDataTypeIcon[slot] = mRes.getIdentifier(
+ dataTypeArray[type], null, NS);
+ mSelectedQSDataTypeIcon[slot] = QS_DATA_H;
+ mSelectedDataTypeDesc[slot] = mDataTypeDescriptionArray[type];
+ mSelectedSignalStreagthIndex[slot] = SIGNAL_STRENGTH_TYPE_H;
+ } else {
+ mSelectedDataActivityIndex[slot] = DATA_TYPE_3G;
+ mSelectedDataTypeIcon[slot] = mRes.getIdentifier(
+ mDataTypeGenerationArray[0], null, NS);
+ mSelectedQSDataTypeIcon[slot] = QS_DATA_3G;
+ mSelectedDataTypeDesc[slot] = mDataTypeGenerationDescArray[0];
+ mSelectedSignalStreagthIndex[slot] = SIGNAL_STRENGTH_TYPE_3G;
+
+ }
+ break;
+ case TelephonyManager.NETWORK_TYPE_HSPAP:
+ if (hspaDistinguishable) {
+ mSelectedDataActivityIndex[slot] = DATA_TYPE_HP;
+ mSelectedDataTypeIcon[slot] = mRes.getIdentifier(
+ dataTypeArray[type], null, NS);
+ mSelectedQSDataTypeIcon[slot] = QS_DATA_H;
+ mSelectedDataTypeDesc[slot] = mDataTypeDescriptionArray[type];
+ mSelectedSignalStreagthIndex[slot] = SIGNAL_STRENGTH_TYPE_HP;
+ } else {
+ mSelectedDataActivityIndex[slot] = DATA_TYPE_3G;
+ mSelectedDataTypeIcon[slot] = mRes.getIdentifier(
+ mDataTypeGenerationArray[0], null, NS);
+ mSelectedQSDataTypeIcon[slot] = QS_DATA_3G;
+ mSelectedDataTypeDesc[slot] = mDataTypeGenerationDescArray[0];
+ mSelectedSignalStreagthIndex[slot] = SIGNAL_STRENGTH_TYPE_3G;
+ }
+ break;
+ case TelephonyManager.NETWORK_TYPE_CDMA:
+ if (!showAtLeast3G) {
+ mSelectedDataActivityIndex[slot] = DATA_TYPE_1X;
+ mSelectedDataTypeIcon[slot] = mRes.getIdentifier(
+ dataTypeArray[type], null, NS);
+ mSelectedQSDataTypeIcon[slot] = QS_DATA_1X;
+ mSelectedDataTypeDesc[slot] = mDataTypeDescriptionArray[type];
+ mSelectedSignalStreagthIndex[slot] = SIGNAL_STRENGTH_TYPE_CDMA;
+ break;
+ } else {
+ // fall through
+ }
+ case TelephonyManager.NETWORK_TYPE_1xRTT:
+ if (!showAtLeast3G) {
+ mSelectedDataActivityIndex[slot] = DATA_TYPE_1X;
+ mSelectedDataTypeIcon[slot] = mRes.getIdentifier(
+ dataTypeArray[type], null, NS);
+ mSelectedQSDataTypeIcon[slot] = QS_DATA_1X;
+ mSelectedDataTypeDesc[slot] = mDataTypeDescriptionArray[type];
+ mSelectedSignalStreagthIndex[slot] = SIGNAL_STRENGTH_TYPE_1X;
+ break;
+ } else {
+ // fall through
+ }
+ case TelephonyManager.NETWORK_TYPE_EVDO_0: //fall through
+ case TelephonyManager.NETWORK_TYPE_EVDO_A:
+ case TelephonyManager.NETWORK_TYPE_EVDO_B:
+ case TelephonyManager.NETWORK_TYPE_EHRPD:
+ mSelectedDataActivityIndex[slot] = DATA_TYPE_3G;
+ mSelectedDataTypeIcon[slot] = mRes.getIdentifier(
+ dataTypeArray[type], null, NS);
+ mSelectedQSDataTypeIcon[slot] = QS_DATA_3G;
+ mSelectedDataTypeDesc[slot] = mDataTypeDescriptionArray[type];
+ mSelectedSignalStreagthIndex[slot] = SIGNAL_STRENGTH_TYPE_3G;
+ break;
+ case TelephonyManager.NETWORK_TYPE_LTE:
+ case TelephonyManager.NETWORK_TYPE_LTE_CA:
+ if (show4GforLte) {
+ mSelectedDataActivityIndex[slot] = DATA_TYPE_4G;
+ mSelectedDataTypeIcon[slot] = mRes.getIdentifier(
+ mDataTypeGenerationArray[1], null, NS);
+ if ( type == TelephonyManager.NETWORK_TYPE_LTE_CA) {
+ //Select 4G+ icon.
+ mSelectedDataTypeIcon[slot] = mRes.getIdentifier(
+ mDataTypeGenerationArray[2], null, NS);
+ }
+ mSelectedQSDataTypeIcon[slot] = QS_DATA_4G;
+ mSelectedDataTypeDesc[slot] = mDataTypeGenerationDescArray[1];
+ mSelectedSignalStreagthIndex[slot] = SIGNAL_STRENGTH_TYPE_4G;
+ } else {
+ mSelectedDataActivityIndex[slot] = DATA_TYPE_LTE;
+ mSelectedDataTypeIcon[slot] = mRes.getIdentifier(
+ dataTypeArray[type], null, NS);
+ mSelectedQSDataTypeIcon[slot] = QS_DATA_LTE;
+ mSelectedDataTypeDesc[slot] = mDataTypeDescriptionArray[type];
+ mSelectedSignalStreagthIndex[slot] = SIGNAL_STRENGTH_TYPE_4G;
+ }
+ break;
+ case TelephonyManager.NETWORK_TYPE_GPRS:
+ case TelephonyManager.NETWORK_TYPE_GSM:
+ if (!showAtLeast3G) {
+ mSelectedDataActivityIndex[slot] = DATA_TYPE_G;
+ mSelectedDataTypeIcon[slot] = mRes.getIdentifier(
+ dataTypeArray[type], null, NS);
+ mSelectedQSDataTypeIcon[slot] = QS_DATA_G;
+ mSelectedDataTypeDesc[slot] = mDataTypeDescriptionArray[type];
+ mSelectedSignalStreagthIndex[slot] = SIGNAL_STRENGTH_TYPE_G;
+ } else {
+ mSelectedDataActivityIndex[slot] = DATA_TYPE_3G;
+ mSelectedDataTypeIcon[slot] = mRes.getIdentifier(
+ mDataTypeGenerationArray[0], null, NS);
+ mSelectedQSDataTypeIcon[slot] = QS_DATA_3G;
+ mSelectedDataTypeDesc[slot] = mDataTypeGenerationDescArray[0];;
+ mSelectedSignalStreagthIndex[slot] = SIGNAL_STRENGTH_TYPE_3G;
+ }
+ break;
+ default:
+ mSelectedDataActivityIndex[slot] = DATA_TYPE_UNKNOWN;
+ mSelectedDataTypeIcon[slot] = 0;
+ mSelectedQSDataTypeIcon[slot] = 0;
+ mSelectedDataTypeDesc[slot] = "";
+ mSelectedSignalStreagthIndex[slot] = SIGNAL_STRENGTH_TYPE_G;
+ break;
+ }
+ log(TAG, "updateDataType " + String.format(
+ "mSelectedDataTypeIcon[%d]=%d, mSelectedDataActivityIndex=%d",
+ slot, mSelectedDataTypeIcon[slot], mSelectedDataActivityIndex[slot]));
+ }
+
+
+ static int getQSDataTypeIcon(int slot) {
+ return mSelectedQSDataTypeIcon[slot];
+ }
+
+ static int getDataTypeIcon(int slot) {
+ log(TAG, "getDataTypeIcon " + String.format("sub=%d", slot));
+ return mSelectedDataTypeIcon[slot];
+ }
+
+ static int getDataTypeDesc(int slot) {
+ return mRes.getIdentifier(mSelectedDataTypeDesc[slot], null, NS);
+ }
+
+ static int getDataActivity(int slot, int activity) {
+ log(TAG, String.format("getDataActivity, slot=%d, activity=%d",
+ slot, activity));
+
+ String[] dataActivityArray = mRes.getStringArray(
+ mRes.getIdentifier(mDataActivityArray[slot], null, NS));
+ String[] selectedTypeArray = mRes.getStringArray(mRes.getIdentifier(
+ dataActivityArray[mSelectedDataActivityIndex[slot]], null, NS));
+
+ return mRes.getIdentifier(selectedTypeArray[activity], null, NS);
+ }
+
+ static int getSignalStrengthIcon(int slot, int inet, int level, boolean roaming) {
+ log(TAG, "getSignalStrengthIcon: " + String.format(
+ "slot=%d, inetCondition=%d, level=%d, roaming=%b", slot, inet, level, roaming));
+
+ String[] signalStrengthArray, selectedTypeArray;
+
+ signalStrengthArray = mRes.getStringArray(mRes.getIdentifier(!roaming ?
+ mSignalStrengthArray[slot] : mSignalStrengthRoamingArray[slot], null, NS));
+ log(TAG, String.format("signalStrengthArray.length=%d", signalStrengthArray.length));
+
+ selectedTypeArray = mRes.getStringArray(mRes.getIdentifier(
+ signalStrengthArray[mSelectedSignalStreagthIndex[slot]], null, NS));
+ log(TAG, String.format("selectedTypeArray.length=%d", selectedTypeArray.length));
+
+ String[] inetArray = mRes.getStringArray(
+ mRes.getIdentifier(selectedTypeArray[inet], null, NS));
+ log(TAG, String.format("inetArray.length=%d", inetArray.length));
+
+ return mRes.getIdentifier(inetArray[level], null, NS);
+ }
+
+
+ static int convertMobileStrengthIcon(int stackedIcon) {
+ if (mStacked2SingleIconLookup == null) {
+ return stackedIcon;
+ }
+ int index = mStacked2SingleIconLookup.indexOfKey(stackedIcon);
+ if (index >= 0) {
+ return mStacked2SingleIconLookup.get(stackedIcon);
+ }
+ return stackedIcon;
+ }
+
+ static int getStackedVoiceIcon(int level) {
+ int retValue = 0;
+ switch(level){
+ case SignalStrength.SIGNAL_STRENGTH_NONE_OR_UNKNOWN:
+ retValue = R.drawable.stat_sys_signal_0_2g;
+ break;
+ case SignalStrength.SIGNAL_STRENGTH_POOR:
+ retValue = R.drawable.stat_sys_signal_1_2g;
+ break;
+ case SignalStrength.SIGNAL_STRENGTH_MODERATE:
+ retValue = R.drawable.stat_sys_signal_2_2g;
+ break;
+ case SignalStrength.SIGNAL_STRENGTH_GOOD:
+ retValue = R.drawable.stat_sys_signal_3_2g;
+ break;
+ case SignalStrength.SIGNAL_STRENGTH_GREAT:
+ retValue = R.drawable.stat_sys_signal_4_2g;
+ break;
+ default:
+ break;
+ }
+ return retValue;
+ }
+
+ static int getRoamingSignalIconId(int level, int inet){
+ return TELEPHONY_SIGNAL_STRENGTH_ROAMING_R[inet][level];
+ }
+
+ static int[] getSignalStrengthDes(int slot) {
+ int[] resId = new int[SIGNAL_LEVEL_NUM];
+ for (int i = 0; i < SIGNAL_LEVEL_NUM; i++) {
+ resId[i] = mRes.getIdentifier(mSignalStrengthDesc[i], null, NS);
+ }
+ return resId;
+ }
+
+ private static void log(String tag, String str){
+ if (DEBUG) {
+ Log.d(tag, str);
+ }
+ }
+
static final MobileIconGroup CARRIER_NETWORK_CHANGE = new MobileIconGroup(
"CARRIER_NETWORK_CHANGE",
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/policy/WifiSignalController.java b/packages/SystemUI/src/com/android/systemui/statusbar/policy/WifiSignalController.java
index 9b1e72a..29be2c9 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/policy/WifiSignalController.java
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/policy/WifiSignalController.java
@@ -29,6 +29,7 @@
import com.android.internal.annotations.VisibleForTesting;
import com.android.internal.util.AsyncChannel;
+import com.android.systemui.R;
import com.android.systemui.statusbar.policy.NetworkController.IconState;
import java.util.List;
@@ -75,8 +76,10 @@
@Override
public void notifyListeners() {
// only show wifi in the cluster if connected or if wifi-only
+ boolean visibleWhenEnabled = mContext.getResources().getBoolean(
+ R.bool.config_showWifiIndicatorWhenEnabled);
boolean wifiVisible = mCurrentState.enabled
- && (mCurrentState.connected || !mHasMobileData);
+ && (mCurrentState.connected || !mHasMobileData || visibleWhenEnabled);
String wifiDesc = wifiVisible ? mCurrentState.ssid : null;
boolean ssidPresent = wifiVisible && mCurrentState.ssid != null;
String contentDescription = getStringIfExists(getContentDescription());
diff --git a/packages/SystemUI/tests/src/com/android/systemui/statusbar/policy/CallbackHandlerTest.java b/packages/SystemUI/tests/src/com/android/systemui/statusbar/policy/CallbackHandlerTest.java
index 00b8de2..5e840f5 100644
--- a/packages/SystemUI/tests/src/com/android/systemui/statusbar/policy/CallbackHandlerTest.java
+++ b/packages/SystemUI/tests/src/com/android/systemui/statusbar/policy/CallbackHandlerTest.java
@@ -104,8 +104,8 @@
int qsType = R.drawable.ic_qs_signal_1x;
boolean wide = true;
int subId = 5;
- mHandler.setMobileDataIndicators(status, qs, type, qsType, in, out, typeDescription,
- description, wide, subId);
+ mHandler.setMobileDataIndicators(status, qs, type, qsType, in, out, 0, 0, 0, 0,
+ typeDescription, description, wide, subId);
waitForCallbacks();
ArgumentCaptor<IconState> statusArg = ArgumentCaptor.forClass(IconState.class);
@@ -120,7 +120,11 @@
ArgumentCaptor<Integer> subIdArg = ArgumentCaptor.forClass(Integer.class);
Mockito.verify(mSignalCallback).setMobileDataIndicators(statusArg.capture(),
qsArg.capture(), typeIconArg.capture(), qsTypeIconArg.capture(), inArg.capture(),
- outArg.capture(), typeContentArg.capture(), descArg.capture(), wideArg.capture(),
+ outArg.capture(), ArgumentCaptor.forClass(Integer.class).capture(),
+ ArgumentCaptor.forClass(Integer.class).capture(),
+ ArgumentCaptor.forClass(Integer.class).capture(),
+ ArgumentCaptor.forClass(Integer.class).capture(),
+ typeContentArg.capture(), descArg.capture(), wideArg.capture(),
subIdArg.capture());
assertEquals(status, statusArg.getValue());
assertEquals(qs, qsArg.getValue());
diff --git a/packages/SystemUI/tests/src/com/android/systemui/statusbar/policy/NetworkControllerBaseTest.java b/packages/SystemUI/tests/src/com/android/systemui/statusbar/policy/NetworkControllerBaseTest.java
index 30c08cd..58cb6ff 100644
--- a/packages/SystemUI/tests/src/com/android/systemui/statusbar/policy/NetworkControllerBaseTest.java
+++ b/packages/SystemUI/tests/src/com/android/systemui/statusbar/policy/NetworkControllerBaseTest.java
@@ -276,6 +276,10 @@
iconArg.capture(),
ArgumentCaptor.forClass(Integer.class).capture(),
typeIconArg.capture(), dataInArg.capture(), dataOutArg.capture(),
+ ArgumentCaptor.forClass(Integer.class).capture(),
+ ArgumentCaptor.forClass(Integer.class).capture(),
+ ArgumentCaptor.forClass(Integer.class).capture(),
+ ArgumentCaptor.forClass(Integer.class).capture(),
ArgumentCaptor.forClass(String.class).capture(),
ArgumentCaptor.forClass(String.class).capture(),
ArgumentCaptor.forClass(Boolean.class).capture(),
@@ -302,6 +306,10 @@
ArgumentCaptor.forClass(Integer.class).capture(),
ArgumentCaptor.forClass(Boolean.class).capture(),
ArgumentCaptor.forClass(Boolean.class).capture(),
+ ArgumentCaptor.forClass(Integer.class).capture(),
+ ArgumentCaptor.forClass(Integer.class).capture(),
+ ArgumentCaptor.forClass(Integer.class).capture(),
+ ArgumentCaptor.forClass(Integer.class).capture(),
ArgumentCaptor.forClass(String.class).capture(),
ArgumentCaptor.forClass(String.class).capture(),
ArgumentCaptor.forClass(Boolean.class).capture(),
diff --git a/services/core/java/com/android/server/BluetoothManagerService.java b/services/core/java/com/android/server/BluetoothManagerService.java
index de1e0e7..3f918e7 100644
--- a/services/core/java/com/android/server/BluetoothManagerService.java
+++ b/services/core/java/com/android/server/BluetoothManagerService.java
@@ -34,6 +34,7 @@
import android.content.IntentFilter;
import android.content.ServiceConnection;
import android.content.pm.PackageManager;
+import android.content.pm.UserInfo;
import android.database.ContentObserver;
import android.os.Binder;
import android.os.Handler;
@@ -46,6 +47,7 @@
import android.os.RemoteException;
import android.os.SystemClock;
import android.os.UserHandle;
+import android.os.UserManager;
import android.provider.Settings;
import android.provider.Settings.SettingNotFoundException;
import android.util.Log;
@@ -1373,16 +1375,21 @@
int callingUser = UserHandle.getCallingUserId();
int callingUid = Binder.getCallingUid();
long callingIdentity = Binder.clearCallingIdentity();
+ UserManager um = (UserManager) mContext.getSystemService(Context.USER_SERVICE);
+ UserInfo ui = um.getProfileParent(callingUser);
+ int parentUser = (ui != null) ? ui.id : UserHandle.USER_NULL;
int callingAppId = UserHandle.getAppId(callingUid);
boolean valid = false;
try {
foregroundUser = ActivityManager.getCurrentUser();
valid = (callingUser == foregroundUser) ||
+ parentUser == foregroundUser ||
callingAppId == Process.NFC_UID ||
callingAppId == mSystemUiUid;
if (DBG) {
Log.d(TAG, "checkIfCallerIsForegroundUser: valid=" + valid
+ " callingUser=" + callingUser
+ + " parentUser=" + parentUser
+ " foregroundUser=" + foregroundUser);
}
} finally {
diff --git a/services/core/java/com/android/server/am/ActivityManagerService.java b/services/core/java/com/android/server/am/ActivityManagerService.java
index 02f5cfd..c60783d 100644
--- a/services/core/java/com/android/server/am/ActivityManagerService.java
+++ b/services/core/java/com/android/server/am/ActivityManagerService.java
@@ -296,6 +296,11 @@
private static final String TAG_VISIBILITY = TAG + POSTFIX_VISIBILITY;
private static final String TAG_VISIBLE_BEHIND = TAG + POSTFIX_VISIBLE_BEHIND;
+ private static final String ACTION_POWER_OFF_ALARM =
+ "org.codeaurora.alarm.action.POWER_OFF_ALARM";
+
+ private static final String POWER_OFF_ALARM = "powerOffAlarm";
+
/** Control over CPU and battery monitoring */
// write battery stats every 30 minutes.
static final long BATTERY_STATS_TIME = 30 * 60 * 1000;
@@ -3484,6 +3489,15 @@
return true;
}
+ /**
+ * If system is power off alarm boot mode, we need to start alarm UI.
+ */
+ void startAlarmActivityLocked() {
+ Intent intent = new Intent(ACTION_POWER_OFF_ALARM);
+ intent.addFlags(Intent.FLAG_RECEIVER_FOREGROUND);
+ mContext.startActivityAsUser(intent, UserHandle.CURRENT);
+ }
+
private ActivityInfo resolveActivityInfo(Intent intent, int flags, int userId) {
ActivityInfo ai = null;
ComponentName comp = intent.getComponent();
@@ -5088,10 +5102,6 @@
newTracesPath = tracesPath + "_" + app.processName;
traceRenameFile.renameTo(new File(newTracesPath));
- Process.sendSignal(app.pid, 6);
- SystemClock.sleep(1000);
- Process.sendSignal(app.pid, 6);
- SystemClock.sleep(1000);
}
// Bring up the infamous App Not Responding dialog
@@ -11870,6 +11880,12 @@
mBooting = true;
startHomeActivityLocked(mCurrentUserId, "systemReady");
+ // start the power off alarm by boot mode
+ boolean isAlarmBoot = SystemProperties.getBoolean("ro.alarm_boot", false);
+ if (isAlarmBoot) {
+ startAlarmActivityLocked();
+ }
+
try {
if (AppGlobals.getPackageManager().hasSystemUidErrors()) {
Slog.e(TAG, "UIDs on the system are inconsistent, you need to wipe your"
diff --git a/services/core/java/com/android/server/policy/PhoneWindowManager.java b/services/core/java/com/android/server/policy/PhoneWindowManager.java
index 08172ab..42e8c29 100644
--- a/services/core/java/com/android/server/policy/PhoneWindowManager.java
+++ b/services/core/java/com/android/server/policy/PhoneWindowManager.java
@@ -2662,6 +2662,19 @@
+ " canceled=" + canceled);
}
+ // If the boot mode is power off alarm, we should not dispatch the several physical keys
+ // in power off alarm UI to avoid pausing power off alarm UI.
+ int isPowerOffAlarmMode = Settings.System.getInt(mContext.getContentResolver(),
+ Settings.System.POWER_OFF_ALARM_MODE, 0);
+ if (DEBUG_INPUT) { Log.d(TAG, "intercept Dispatching isPowerOffAlarmMode = " +
+ isPowerOffAlarmMode); }
+
+ if (isPowerOffAlarmMode == 1 && (keyCode == KeyEvent.KEYCODE_HOME
+ || keyCode == KeyEvent.KEYCODE_SEARCH
+ || keyCode == KeyEvent.KEYCODE_MENU)) {
+ return -1; // ignore the physical key here
+ }
+
// If we think we might have a volume down & power key chord on the way
// but we're not sure, then tell the dispatcher to wait a little while and
// try again later before dispatching.
diff --git a/services/core/jni/com_android_server_AlarmManagerService.cpp b/services/core/jni/com_android_server_AlarmManagerService.cpp
index 7d34448..546e3e6 100644
--- a/services/core/jni/com_android_server_AlarmManagerService.cpp
+++ b/services/core/jni/com_android_server_AlarmManagerService.cpp
@@ -49,6 +49,7 @@
CLOCK_BOOTTIME_ALARM,
CLOCK_BOOTTIME,
CLOCK_MONOTONIC,
+ CLOCK_POWEROFF_ALARM,
CLOCK_REALTIME,
};
/* to match the legacy alarm driver implementation, we need an extra
diff --git a/services/java/com/android/server/SystemServer.java b/services/java/com/android/server/SystemServer.java
index bd72860..93f735f 100644
--- a/services/java/com/android/server/SystemServer.java
+++ b/services/java/com/android/server/SystemServer.java
@@ -438,6 +438,7 @@
boolean disableNetwork = SystemProperties.getBoolean("config.disable_network", false);
boolean disableNetworkTime = SystemProperties.getBoolean("config.disable_networktime", false);
boolean isEmulator = SystemProperties.get("ro.kernel.qemu").equals("1");
+ boolean disableAtlas = SystemProperties.getBoolean("config.disable_atlas", true);
try {
Slog.i(TAG, "Reading configuration...");
@@ -927,7 +928,7 @@
mSystemServiceManager.startService(DreamManagerService.class);
}
- if (!disableNonCoreServices) {
+ if (!disableNonCoreServices && !disableAtlas) {
try {
Slog.i(TAG, "Assets Atlas Service");
atlas = new AssetAtlasService(context);
diff --git a/telephony/java/com/android/ims/ImsReasonInfo.java b/telephony/java/com/android/ims/ImsReasonInfo.java
index 3ab415c..85ec162 100644
--- a/telephony/java/com/android/ims/ImsReasonInfo.java
+++ b/telephony/java/com/android/ims/ImsReasonInfo.java
@@ -251,6 +251,14 @@
public static final int CODE_CALL_END_CAUSE_CALL_PULL = 1016;
/**
+ * Supplementary services (HOLD/RESUME) failure error codes.
+ * Values for Supplemetary services failure - Failed, Cancelled and Re-Invite collision.
+ */
+ public static final int CODE_SUPP_SVC_FAILED = 1201;
+ public static final int CODE_SUPP_SVC_CANCELLED = 1202;
+ public static final int CODE_SUPP_SVC_REINVITE_COLLISION = 1203;
+
+ /**
* Network string error messages.
* mExtraMessage may have these values.
*/