summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
author Evan Chen <evanxinchen@google.com> 2024-02-29 23:54:04 +0000
committer Android (Google) Code Review <android-gerrit@google.com> 2024-02-29 23:54:04 +0000
commit4cb7b55f968a99dc8367c04b0bb51036ccac5bcc (patch)
tree2b7d902eb8e5bff2588d2a5d10cf51387bf1a296
parent82f6cf97bcdd45eb2a0969fbefd8ad87483581bc (diff)
parent66792c3d6522a07813416f390157b50c04e1c228 (diff)
Merge "[A11y] Scroll up/down for voice access mode" into main
-rw-r--r--packages/CompanionDeviceManager/src/com/android/companiondevicemanager/CompanionDeviceActivity.java50
1 files changed, 31 insertions, 19 deletions
diff --git a/packages/CompanionDeviceManager/src/com/android/companiondevicemanager/CompanionDeviceActivity.java b/packages/CompanionDeviceManager/src/com/android/companiondevicemanager/CompanionDeviceActivity.java
index 66282dc209ed..4c1f6313c3a0 100644
--- a/packages/CompanionDeviceManager/src/com/android/companiondevicemanager/CompanionDeviceActivity.java
+++ b/packages/CompanionDeviceManager/src/com/android/companiondevicemanager/CompanionDeviceActivity.java
@@ -27,13 +27,13 @@ import static android.view.WindowManager.LayoutParams.SYSTEM_FLAG_HIDE_NON_SYSTE
import static com.android.companiondevicemanager.CompanionDeviceDiscoveryService.DiscoveryState;
import static com.android.companiondevicemanager.CompanionDeviceDiscoveryService.DiscoveryState.FINISHED_TIMEOUT;
-import static com.android.companiondevicemanager.CompanionDeviceResources.PROFILE_PERMISSIONS;
-import static com.android.companiondevicemanager.CompanionDeviceResources.PROFILE_NAMES;
import static com.android.companiondevicemanager.CompanionDeviceResources.PROFILE_ICONS;
+import static com.android.companiondevicemanager.CompanionDeviceResources.PROFILE_NAMES;
+import static com.android.companiondevicemanager.CompanionDeviceResources.PROFILE_PERMISSIONS;
import static com.android.companiondevicemanager.CompanionDeviceResources.PROFILE_SUMMARIES;
+import static com.android.companiondevicemanager.CompanionDeviceResources.PROFILE_TITLES;
import static com.android.companiondevicemanager.CompanionDeviceResources.SUPPORTED_PROFILES;
import static com.android.companiondevicemanager.CompanionDeviceResources.SUPPORTED_SELF_MANAGED_PROFILES;
-import static com.android.companiondevicemanager.CompanionDeviceResources.PROFILE_TITLES;
import static com.android.companiondevicemanager.Utils.getApplicationLabel;
import static com.android.companiondevicemanager.Utils.getHtmlFromResources;
import static com.android.companiondevicemanager.Utils.getIcon;
@@ -68,6 +68,7 @@ import android.text.Spanned;
import android.util.Log;
import android.view.View;
import android.view.ViewTreeObserver;
+import android.view.accessibility.AccessibilityNodeInfo;
import android.widget.Button;
import android.widget.ImageButton;
import android.widget.ImageView;
@@ -697,14 +698,15 @@ public class CompanionDeviceActivity extends FragmentActivity implements
disableButtons();
+ LinearLayoutManager permissionListLayoutManager =
+ (LinearLayoutManager) mPermissionListRecyclerView
+ .getLayoutManager();
+
// Enable buttons once users scroll down to the bottom of the permission list.
mPermissionListRecyclerView.addOnScrollListener(new RecyclerView.OnScrollListener() {
@Override
- public void onScrollStateChanged(RecyclerView recyclerView, int newState) {
- super.onScrollStateChanged(recyclerView, newState);
- if (!recyclerView.canScrollVertically(1)) {
- enableButtons();
- }
+ public void onScrolled(@NonNull RecyclerView recyclerView, int dx, int dy) {
+ enableAllowButtonIfNeeded(permissionListLayoutManager);
}
});
// Enable buttons if last item in the permission list is visible to the users when
@@ -713,26 +715,36 @@ public class CompanionDeviceActivity extends FragmentActivity implements
new ViewTreeObserver.OnGlobalLayoutListener() {
@Override
public void onGlobalLayout() {
- LinearLayoutManager layoutManager =
- (LinearLayoutManager) mPermissionListRecyclerView
- .getLayoutManager();
- int lastVisibleItemPosition =
- layoutManager.findLastCompletelyVisibleItemPosition();
- int numItems = mPermissionListRecyclerView.getAdapter().getItemCount();
-
- if (lastVisibleItemPosition >= numItems - 1) {
- enableButtons();
- }
-
+ enableAllowButtonIfNeeded(permissionListLayoutManager);
mPermissionListRecyclerView.getViewTreeObserver()
.removeOnGlobalLayoutListener(this);
}
});
+ // Set accessibility for the recyclerView that to be able scroll up/down for voice access.
+ mPermissionListRecyclerView.setAccessibilityDelegate(new View.AccessibilityDelegate() {
+ public void onInitializeAccessibilityNodeInfo(View host, AccessibilityNodeInfo info) {
+ super.onInitializeAccessibilityNodeInfo(host, info);
+ info.addAction(AccessibilityNodeInfo.AccessibilityAction.ACTION_SCROLL_DOWN);
+ info.addAction(AccessibilityNodeInfo.AccessibilityAction.ACTION_SCROLL_UP);
+ }
+ });
+
mConstraintList.setVisibility(View.VISIBLE);
mPermissionListRecyclerView.setVisibility(View.VISIBLE);
}
+ // Enable the Allow button if the last element in the PermissionListRecyclerView is reached.
+ private void enableAllowButtonIfNeeded(LinearLayoutManager layoutManager) {
+ int lastVisibleItemPosition =
+ layoutManager.findLastCompletelyVisibleItemPosition();
+ int numItems = mPermissionListRecyclerView.getAdapter().getItemCount();
+
+ if (lastVisibleItemPosition >= numItems - 1) {
+ enableButtons();
+ }
+ }
+
// Disable and grey out the Allow and Don't allow buttons if the last permission in the
// permission list is not visible to the users.
private void disableButtons() {