[Wi-Fi DPP] Improve TalkBack information for events

Title and summary may be changed after user operations or Wi-Fi Easy connect handshake,
setAccessibilityLiveRegion could specify accessibility services to announce these changes.

In WifiDppAddDeviceFragment, I set title before summary for correct TalkBack announce sequence.

Bug: 137069941
Test: manual
Change-Id: Id032cfcb86c350feeac808f070665ac26261ceb8
This commit is contained in:
Arc Wang
2019-07-09 17:20:50 +08:00
parent 7c896fa1c0
commit 1df7f2d1c1
6 changed files with 23 additions and 11 deletions

View File

@@ -35,7 +35,8 @@
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:layout_marginStart="?attr/sudMarginSides" android:layout_marginStart="?attr/sudMarginSides"
android:layout_marginEnd="?attr/sudMarginSides" android:layout_marginEnd="?attr/sudMarginSides"
android:textAlignment="center"/> android:textAlignment="center"
android:accessibilityLiveRegion="polite"/>
<LinearLayout <LinearLayout
android:layout_width="match_parent" android:layout_width="match_parent"

View File

@@ -35,7 +35,8 @@
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:layout_marginStart="?attr/sudMarginSides" android:layout_marginStart="?attr/sudMarginSides"
android:layout_marginEnd="?attr/sudMarginSides" android:layout_marginEnd="?attr/sudMarginSides"
android:textAlignment="center"/> android:textAlignment="center"
android:accessibilityLiveRegion="polite"/>
<LinearLayout android:id="@+id/wifi_network_list_container" <LinearLayout android:id="@+id/wifi_network_list_container"
android:layout_width="match_parent" android:layout_width="match_parent"

View File

@@ -35,7 +35,8 @@
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:layout_marginStart="?attr/sudMarginSides" android:layout_marginStart="?attr/sudMarginSides"
android:layout_marginEnd="?attr/sudMarginSides" android:layout_marginEnd="?attr/sudMarginSides"
android:textAlignment="center"/> android:textAlignment="center"
android:accessibilityLiveRegion="polite"/>
<LinearLayout <LinearLayout
android:layout_width="match_parent" android:layout_width="match_parent"

View File

@@ -35,7 +35,8 @@
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:layout_marginStart="?attr/sudMarginSides" android:layout_marginStart="?attr/sudMarginSides"
android:layout_marginEnd="?attr/sudMarginSides" android:layout_marginEnd="?attr/sudMarginSides"
android:textAlignment="center"/> android:textAlignment="center"
android:accessibilityLiveRegion="polite"/>
<LinearLayout <LinearLayout
android:layout_width="match_parent" android:layout_width="match_parent"

View File

@@ -100,21 +100,24 @@ public class WifiDppAddDeviceFragment extends WifiDppQrCodeBaseFragment {
} }
private void showErrorUi(int code, boolean isConfigurationChange) { private void showErrorUi(int code, boolean isConfigurationChange) {
CharSequence summaryCharSequence;
switch (code) { switch (code) {
case EasyConnectStatusCallback.EASY_CONNECT_EVENT_FAILURE_INVALID_URI: case EasyConnectStatusCallback.EASY_CONNECT_EVENT_FAILURE_INVALID_URI:
mSummary.setText(R.string.wifi_dpp_qr_code_is_not_valid_format); summaryCharSequence = getText(R.string.wifi_dpp_qr_code_is_not_valid_format);
break; break;
case EasyConnectStatusCallback.EASY_CONNECT_EVENT_FAILURE_AUTHENTICATION: case EasyConnectStatusCallback.EASY_CONNECT_EVENT_FAILURE_AUTHENTICATION:
mSummary.setText(R.string.wifi_dpp_failure_authentication_or_configuration); summaryCharSequence = getText(
R.string.wifi_dpp_failure_authentication_or_configuration);
break; break;
case EasyConnectStatusCallback.EASY_CONNECT_EVENT_FAILURE_NOT_COMPATIBLE: case EasyConnectStatusCallback.EASY_CONNECT_EVENT_FAILURE_NOT_COMPATIBLE:
mSummary.setText(R.string.wifi_dpp_failure_not_compatible); summaryCharSequence = getText(R.string.wifi_dpp_failure_not_compatible);
break; break;
case EasyConnectStatusCallback.EASY_CONNECT_EVENT_FAILURE_CONFIGURATION: case EasyConnectStatusCallback.EASY_CONNECT_EVENT_FAILURE_CONFIGURATION:
mSummary.setText(R.string.wifi_dpp_failure_authentication_or_configuration); summaryCharSequence = getText(
R.string.wifi_dpp_failure_authentication_or_configuration);
break; break;
case EasyConnectStatusCallback.EASY_CONNECT_EVENT_FAILURE_BUSY: case EasyConnectStatusCallback.EASY_CONNECT_EVENT_FAILURE_BUSY:
@@ -135,15 +138,16 @@ public class WifiDppAddDeviceFragment extends WifiDppQrCodeBaseFragment {
return; return;
case EasyConnectStatusCallback.EASY_CONNECT_EVENT_FAILURE_TIMEOUT: case EasyConnectStatusCallback.EASY_CONNECT_EVENT_FAILURE_TIMEOUT:
mSummary.setText(R.string.wifi_dpp_failure_timeout); summaryCharSequence = getText(R.string.wifi_dpp_failure_timeout);
break; break;
case EasyConnectStatusCallback.EASY_CONNECT_EVENT_FAILURE_GENERIC: case EasyConnectStatusCallback.EASY_CONNECT_EVENT_FAILURE_GENERIC:
mSummary.setText(R.string.wifi_dpp_failure_generic); summaryCharSequence = getText(R.string.wifi_dpp_failure_generic);
break; break;
case EasyConnectStatusCallback.EASY_CONNECT_EVENT_FAILURE_NOT_SUPPORTED: case EasyConnectStatusCallback.EASY_CONNECT_EVENT_FAILURE_NOT_SUPPORTED:
mSummary.setText(getString(R.string.wifi_dpp_failure_not_supported, getSsid())); summaryCharSequence = getString(
R.string.wifi_dpp_failure_not_supported, getSsid());
break; break;
case EasyConnectStatusCallback.EASY_CONNECT_EVENT_FAILURE_INVALID_NETWORK: case EasyConnectStatusCallback.EASY_CONNECT_EVENT_FAILURE_INVALID_NETWORK:
@@ -155,6 +159,7 @@ public class WifiDppAddDeviceFragment extends WifiDppQrCodeBaseFragment {
} }
setHeaderTitle(R.string.wifi_dpp_could_not_add_device); setHeaderTitle(R.string.wifi_dpp_could_not_add_device);
mSummary.setText(summaryCharSequence);
mWifiApPictureView.setImageResource(R.drawable.wifi_dpp_error); mWifiApPictureView.setImageResource(R.drawable.wifi_dpp_error);
mChooseDifferentNetwork.setVisibility(View.INVISIBLE); mChooseDifferentNetwork.setVisibility(View.INVISIBLE);
if (hasRetryButton(code)) { if (hasRetryButton(code)) {

View File

@@ -72,6 +72,9 @@ public abstract class WifiDppQrCodeBaseFragment extends InstrumentedFragment {
.build(); .build();
mGlifLayout.getMixin(FooterBarMixin.class).setPrimaryButton(mRightButton); mGlifLayout.getMixin(FooterBarMixin.class).setPrimaryButton(mRightButton);
} }
mGlifLayout.getHeaderTextView().setAccessibilityLiveRegion(
View.ACCESSIBILITY_LIVE_REGION_POLITE);
} }
protected void setHeaderIconImageResource(@DrawableRes int iconResId) { protected void setHeaderIconImageResource(@DrawableRes int iconResId) {