Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 8385092d authored by Riley Jones's avatar Riley Jones
Browse files

Readme for AccessibilityMenu

Bug: 266252374
Fix: 266252374
Test: navigate to the root of the project and peruse the readme
Change-Id: I2fa1d451e8a3392afe83939b0d9f0a6fa930523a
parent b3295cfd
Loading
Loading
Loading
Loading
+40 −0
Original line number Diff line number Diff line
The Accessibility Menu is an accessibility service
that presents a large on-screen menu to control your Android device.
This service can be enabled from the Accessibility page in the Settings app.
You can control gestures, hardware buttons, navigation, and more. From the menu, you can:

- Take screenshots
- Lock your screen
- Open the device's voice assistant
- Open Quick Settings and Notifications
- Turn volume up or down
- Turn brightness up or down

The UI consists of a `ViewPager` populated by multiple pages of shortcut buttons.
In the settings for the menu, there is an option to display the buttons in a 3x3 grid per page,
or a 2x2 grid with larger buttons.

Upon activation, most buttons will close the menu while performing their function.
The exception to this are buttons that adjust a value, like volume or brightness,
where the user is likely to want to press the button multiple times.
In addition, touching other parts of the screen or locking the phone through other means
should dismiss the menu.

A majority of the shortcuts correspond directly to an existing accessibility service global action
(see `AccessibilityService#performGlobalAction()` constants) that is performed when pressed.
Shortcuts that navigate to a different menu, such as Quick Settings, use an intent to do so.
Shortcuts that adjust brightness or volume interface directly with
`DisplayManager` & `AudioManager` respectively.

To add a new shortcut:

1. Add a value for the new shortcut to the `ShortcutId` enum in `A11yMenuShortcut`.
2. Put an entry for the enum value into the `sShortcutResource` `HashMap` in `A11yMenuShortcut`.
This will require resources for a drawable icon, a color for the icon,
the displayed name of the shortcut and the desired text-to-speech output.
3. Add the enum value to the `SHORTCUT_LIST_DEFAULT` & `LARGE_SHORTCUT_LIST_DEFAULT` arrays
in `A11yMenuOverlayLayout`.
4. For functionality, add a code block to the if-else chain in
`AccessibilityMenuService.handleClick()`, detailing the effect of the shortcut.
If you don't want the shortcut to close the menu,
include a return statement at the end of the code block.