diff --git a/packages/SystemUI/res/layout/keyguard_status_bar.xml b/packages/SystemUI/res/layout/keyguard_status_bar.xml
index fcc0f4aaf4593..faa2820aae354 100644
--- a/packages/SystemUI/res/layout/keyguard_status_bar.xml
+++ b/packages/SystemUI/res/layout/keyguard_status_bar.xml
@@ -60,7 +60,8 @@
android:paddingEnd="@dimen/battery_level_padding_end"
android:textColor="#ffffff"
android:visibility="gone"
- android:textSize="@dimen/battery_level_text_size"/>
+ android:textSize="@dimen/battery_level_text_size"
+ android:importantForAccessibility="noHideDescendants"/>
+ android:textSize="@dimen/battery_level_text_size"
+ android:importantForAccessibility="noHideDescendants"/>
Wifi signal full.
+
+ Connected to %s.
+
+
+ Connected to %s.
+
+
No WiMAX.
@@ -398,7 +405,7 @@
User %s.
- %1$s. %2$s
+ %1$s.
Mobile %1$s. %2$s. %3$s.
diff --git a/packages/SystemUI/src/com/android/systemui/qs/QSPanel.java b/packages/SystemUI/src/com/android/systemui/qs/QSPanel.java
index 1fa97bd887f82..bf01b7b29deef 100644
--- a/packages/SystemUI/src/com/android/systemui/qs/QSPanel.java
+++ b/packages/SystemUI/src/com/android/systemui/qs/QSPanel.java
@@ -347,8 +347,8 @@ public class QSPanel extends ViewGroup {
}
for (TileRecord record : mRecords) {
- if (record.tileView.getVisibility() == GONE) continue;
record.tileView.setDual(record.tile.supportsDualTargets());
+ if (record.tileView.getVisibility() == GONE) continue;
final int cw = record.row == 0 ? mLargeCellWidth : mCellWidth;
final int ch = record.row == 0 ? mLargeCellHeight : mCellHeight;
record.tileView.measure(exactly(cw), exactly(ch));
diff --git a/packages/SystemUI/src/com/android/systemui/qs/QSTile.java b/packages/SystemUI/src/com/android/systemui/qs/QSTile.java
index 6975541a48392..409cc461e4e20 100644
--- a/packages/SystemUI/src/com/android/systemui/qs/QSTile.java
+++ b/packages/SystemUI/src/com/android/systemui/qs/QSTile.java
@@ -286,6 +286,7 @@ public abstract class QSTile implements Listenable {
public Drawable icon;
public String label;
public String contentDescription;
+ public String dualLabelContentDescription;
public boolean copyTo(State other) {
if (other == null) throw new IllegalArgumentException();
@@ -294,12 +295,15 @@ public abstract class QSTile implements Listenable {
|| other.iconId != iconId
|| !Objects.equals(other.icon, icon)
|| !Objects.equals(other.label, label)
- || !Objects.equals(other.contentDescription, contentDescription);
+ || !Objects.equals(other.contentDescription, contentDescription)
+ || !Objects.equals(other.dualLabelContentDescription,
+ dualLabelContentDescription);
other.visible = visible;
other.iconId = iconId;
other.icon = icon;
other.label = label;
other.contentDescription = contentDescription;
+ other.dualLabelContentDescription = dualLabelContentDescription;
return changed;
}
@@ -315,6 +319,7 @@ public abstract class QSTile implements Listenable {
sb.append(",icon=").append(icon);
sb.append(",label=").append(label);
sb.append(",contentDescription=").append(contentDescription);
+ sb.append(",dualLabelContentDescription=").append(dualLabelContentDescription);
return sb.append(']');
}
}
diff --git a/packages/SystemUI/src/com/android/systemui/qs/QSTileView.java b/packages/SystemUI/src/com/android/systemui/qs/QSTileView.java
index 597bb937b9568..2cc1f07f34ee0 100644
--- a/packages/SystemUI/src/com/android/systemui/qs/QSTileView.java
+++ b/packages/SystemUI/src/com/android/systemui/qs/QSTileView.java
@@ -87,6 +87,7 @@ public class QSTileView extends ViewGroup {
private void recreateLabel() {
CharSequence labelText = null;
+ CharSequence labelDescription = null;
if (mLabel != null) {
labelText = mLabel.getText();
removeView(mLabel);
@@ -94,6 +95,7 @@ public class QSTileView extends ViewGroup {
}
if (mDualLabel != null) {
labelText = mDualLabel.getText();
+ labelDescription = mLabel.getContentDescription();
removeView(mDualLabel);
mDualLabel = null;
}
@@ -113,6 +115,9 @@ public class QSTileView extends ViewGroup {
if (labelText != null) {
mDualLabel.setText(labelText);
}
+ if (labelDescription != null) {
+ mDualLabel.setContentDescription(labelDescription);
+ }
addView(mDualLabel);
} else {
mLabel = new TextView(mContext);
@@ -228,6 +233,7 @@ public class QSTileView extends ViewGroup {
}
if (mDual) {
mDualLabel.setText(state.label);
+ mDualLabel.setContentDescription(state.dualLabelContentDescription);
} else {
mLabel.setText(state.label);
}
diff --git a/packages/SystemUI/src/com/android/systemui/qs/tiles/BluetoothTile.java b/packages/SystemUI/src/com/android/systemui/qs/tiles/BluetoothTile.java
index 1b2c0b005a1a7..19b9ec183d949 100644
--- a/packages/SystemUI/src/com/android/systemui/qs/tiles/BluetoothTile.java
+++ b/packages/SystemUI/src/com/android/systemui/qs/tiles/BluetoothTile.java
@@ -114,6 +114,12 @@ public class BluetoothTile extends QSTile {
}
state.contentDescription = mContext.getString(
R.string.accessibility_quick_settings_bluetooth, stateContentDescription);
+ String bluetoothName = state.label;
+ if (connected) {
+ bluetoothName = state.dualLabelContentDescription = mContext.getString(
+ R.string.accessibility_bluetooth_name, state.label);
+ }
+ state.dualLabelContentDescription = bluetoothName;
}
private final BluetoothController.Callback mCallback = new BluetoothController.Callback() {
diff --git a/packages/SystemUI/src/com/android/systemui/qs/tiles/WifiTile.java b/packages/SystemUI/src/com/android/systemui/qs/tiles/WifiTile.java
index 5651d4933d1d3..a8bf0268d4668 100644
--- a/packages/SystemUI/src/com/android/systemui/qs/tiles/WifiTile.java
+++ b/packages/SystemUI/src/com/android/systemui/qs/tiles/WifiTile.java
@@ -132,8 +132,12 @@ public class WifiTile extends QSTile {
}
state.contentDescription = mContext.getString(
R.string.accessibility_quick_settings_wifi,
- signalContentDescription,
- state.connected ? state.label : "");
+ signalContentDescription);
+ String wifiName = state.label;
+ if (state.connected) {
+ wifiName = r.getString(R.string.accessibility_wifi_name, state.label);
+ }
+ state.dualLabelContentDescription = wifiName;
}
private static String removeDoubleQuotes(String string) {
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 4e9f37daf9608..15a7047973941 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/policy/NetworkControllerImpl.java
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/policy/NetworkControllerImpl.java
@@ -602,6 +602,8 @@ public class NetworkControllerImpl extends BroadcastReceiver
mPhoneSignalIconId = R.drawable.stat_sys_signal_null;
mQSPhoneSignalIconId = R.drawable.ic_qs_signal_no_signal;
mDataSignalIconId = R.drawable.stat_sys_signal_null;
+ mContentDescriptionPhoneSignal = mContext.getString(
+ AccessibilityContentDescriptions.PHONE_SIGNAL_STRENGTH[0]);
} else {
if (mSignalStrength == null) {
if (CHATTY) Log.d(TAG, "updateTelephonySignalStrength: mSignalStrength == null");
@@ -665,8 +667,7 @@ public class NetworkControllerImpl extends BroadcastReceiver
mDataIconList = TelephonyIcons.DATA_G[mInetCondition];
mDataTypeIconId = 0;
mQSDataTypeIconId = 0;
- mContentDescriptionDataType = mContext.getString(
- R.string.accessibility_data_connection_gprs);
+ mContentDescriptionDataType = "";
break;
} else {
// fall through