Reset rotary_input_method if the specified IME is not installed

This change prevents CarRotaryImeTest failures on branches where the reference rotary IME is not included in the build.

AOSP config.xml specifies R.string.rotary_input_method, but the actual IME APK is not present in older branches, causing CTS failures. This has been corrected on the main branch.

To address this on older branches, this CL checks if the specified rotary_input_method corresponds to an installed IME in RotaryService. If the IME is not installed, it resets the value to an empty string.

This approach was chosen over:
1.  Cherry-picking main branch fixes: Deemed too risky due to the number and size of CLs involved.
2.  Adding the rotary IME APK to old branches: Requires significant effort to set up new repositories.

This solution ensures no functional regressions or CTS test failures for OEMs. The reference rotary IME is not used by any OEMs so far, and OEMs who do use a dedicated rotary IME are expected to include the necessary APK in their build.

Bug: 407824381
Fixes: 438646999
Fixes: 459516187
Fixes: 473841033
Fixes: 467482171
Fixes: 397795041
Test: atest CtsCarTestCases

Change-Id: I72efde005a6945c9cb625c5da353cad1bb6de12c
1 file changed
tree: d99d3b932271b28a901e23d8ad733c81b83687f6
  1. proto/
  2. res/
  3. src/
  4. tests/
  5. tools/
  6. .gitignore
  7. Android.bp
  8. AndroidManifest.xml
  9. OWNERS
  10. PREUPLOAD.cfg
  11. readme.md
  12. TEST_MAPPING
readme.md

Car rotary service

Building

make CarRotaryController -j64

Enable/disable RotaryService

To enable, run:

adb shell settings put secure enabled_accessibility_services com.android.car.rotary/com.android.car.rotary.RotaryService

To disable, run:

adb shell settings delete secure enabled_accessibility_services

Inject events

Inject RotaryEvent

To rotate the controller counter-clockwise, run:

adb shell cmd car_service inject-rotary

For clockwise, run:

adb shell cmd car_service inject-rotary -c true

To rotate the controller multiple times (100 ms ago and 50 ms ago), run:

adb shell cmd car_service inject-rotary -dt 100 50

Inject KeyEvent

To nudge the controller up, run:

adb shell cmd car_service inject-key 280

Use KeyCode 280 for nudge up, 281 for nudge down,282 for nudge left,283 for nudge right.

To click the controller center button, run:

adb shell cmd car_service inject-key 23

To long click the controller center button, send down and up action seperately. For example:

adb shell cmd car_service inject-key 23 -a down && sleep 2 && adb shell cmd car_service inject-key 23 -a up