diff options
author | 2024-02-29 23:54:04 +0000 | |
---|---|---|
committer | 2024-02-29 23:54:04 +0000 | |
commit | 4cb7b55f968a99dc8367c04b0bb51036ccac5bcc (patch) | |
tree | 2b7d902eb8e5bff2588d2a5d10cf51387bf1a296 | |
parent | 82f6cf97bcdd45eb2a0969fbefd8ad87483581bc (diff) | |
parent | 66792c3d6522a07813416f390157b50c04e1c228 (diff) |
Merge "[A11y] Scroll up/down for voice access mode" into main
-rw-r--r-- | packages/CompanionDeviceManager/src/com/android/companiondevicemanager/CompanionDeviceActivity.java | 50 |
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() { |