Treat ComposeViews similarly to WebViews ComposeViews create virtual view node hierarchies, the same way WebViews do. So, for ComposeViews, manually traverse the hierarchy instead of focusSearch. Additionally, ComposeViews do not use setBoundsInParent because it is deprecated. Check boundsInScreen as a backup for this. Bug: 192310784 Test: make CarRotaryController Test: adb install CarRotaryController Test: https://photos.app.goo.gl/HxzMQtiYNWcuRRMP9 demo from cl/379755268 Test: atest CarRotaryControllerUnitTests Change-Id: Iebd60976ea7cef90dff04f6028e8425de5ced8a8 (cherry picked from commit 9ee61a2a61dda264b9af2b0b8e58b47defbfb326)
make CarRotaryController -j64
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
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
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