Cloverplay lets you play xCloud, Stadia, and GFN games with consistent, ergonomic on-screen controls on a rooted phone.
NOTE: The screen recorder in the below videos caused insane amounts of lag between inputs and the screen updates. If you notice it looks off, note that the recorder was the reason, not because of anything related to Cloverplay itself.
Once you install Cloverplay, open the app and grant it root access. Then enable the accessibility service:
Then, just open Game Pass or Stadia, open a game, and start playing. The joysticks will appear whenever you press your finger down (left half of the screen will display the left joystick, right half will display the right joystick).
If you want to hide the controls while playing, e.g. to interact with the app (see gotchas below), press and hold the down arrow at the bottom. To reshow them, press and hold the same button again.
The best way to hold the device is as such: assuming the device is in landscape mode, place your index fingers on the top rim as if there were shoulder buttons there. Move the index fingers onto the screen to press L1/2 and R1/2, and use your thumbs to control the joysticks and buttons.
If you feel like your index fingers are stretching into uncomfortable positions or your thumbs are pressing the wrong areas of the screen, experiment with adjusting the button positioning using the preferences described below. (The default settings have been tuned to a Pixel 4XL-like device but assumes that both bezels are the same size.) Some examples of cases you may need to adjust the positions and sizes are if you have particularly small or large hands, a smaller phone screen, or uneven bezels.
Cloverplay works by displaying an overlay on the screen via an accessibility service, and it detects when the screen rotates while you're in the Stadia and xCloud apps. This comes with some things to note:
You can access these by tapping the three dots on the top right of the Cloverplay app -> Preferences. They're saved instantly; just go back to exit and return to the Cloverplay app.
Sets a margin in DP units for the left / right side of the controls. This is particularly useful if your device has non-symmetrical bezels (e.g. the Pixel 4), as you can pad out one side to make it even to the other.
Sets the radius in DP units of the joystick. This is useful if you find the current size to be too small.
Sets the space between the A, B, X, and Y buttons.
Sets the size of the A, B, X, Y, L3, and R3 buttons.
Sets the amount of space on the bottom of the screen beneath the buttons.
Sets the extra padding to the left of L1 and to the right of R2.
Pressing the ABXY buttons near the areas between them will allow you to press two buttons at once. Note that this is experimental
If you have GFN as well and want your controls to be consistent with Cloverplay, enable this option, and the Cloverplay overlay will activate on GFN.
Cloverplay touch controls were designed with a very different layout in mind compared to Stadia's controls. Although Cloverplay existed prior to Stadia adding touch controls, I decided to continue supporting Stadia, as I personally prefer the layout and button sizes in Cloverplay instead.
Please comment in the XDA thread linked above.