41

I'm using Android 4.4 on a real device and I want to set the device orientation via adb. I don't want it done with uiautomator since it won't last after the termination of the uiautomator code.

How can I do this?

Brad Larson
  • 170,088
  • 45
  • 397
  • 571
ShibMe
  • 451
  • 1
  • 4
  • 3

4 Answers4

78

Instead of using "adb shell content", there's a more clean way by using "adb shell settings". They are doing the same thing, put value to settings provider.

adb shell settings put system accelerometer_rotation 0  #disable auto-rotate
adb shell settings put system user_rotation 3  #270° clockwise
  • accelerometer_rotation: auto-rotation, 0 disable, 1 enable
  • user_rotation: actual rotation, clockwise, 0 0°, 1 90°, 2 180°, 3 270°
wrkwrk
  • 2,261
  • 15
  • 21
  • On firestick my screen was rotating automatically and i had to set user_rotation to 0, which stopped it, not sure if they have these values meaning different things (command used: settings put system user_rotation 0) – Mazzy Apr 15 '23 at 19:12
  • This helped recover my Waydroid instance after I maximized an application and everything rotated. – hacker1024 Jul 05 '23 at 12:22
72

You may first need to turn off the automatic rotation:

adb shell content insert --uri content://settings/system --bind name:s:accelerometer_rotation --bind value:i:0

Rotate to landscape:

adb shell content insert --uri content://settings/system --bind name:s:user_rotation --bind value:i:1

Rotate portrait:

adb shell content insert --uri content://settings/system --bind name:s:user_rotation --bind value:i:0
Community
  • 1
  • 1
32

Disable accelerometer_rotation and set the user_rotation


user_rotation Values:
0           # Protrait 
1           # Landscape
2           # Protrait Reversed
3           # Landscape Reversed
accelerometer_rotation Values:
0           # Stay in the current rotation
1           # Rotate the content of the screen

Example using adb:

adb shell settings put system accelerometer_rotation 0
adb shell settings put system user_rotation 3

Example programmatically:

import android.provider.Settings;

// You can get ContentResolver from the Context
Settings.System.putInt(getContentResolver(), Settings.System.ACCELEROMETER_ROTATION, 0);
Settings.System.putInt(getContentResolver(), Settings.System.USER_ROTATION, 3);
Benny
  • 2,233
  • 1
  • 22
  • 27
6

wm cmd can be used to set the user rotation on adb shell

wm help
user-rotation [free|lock] [-d DISPLAY_ID] [rotation]
Set user rotation mode and user rotation.

Example:

wm user-rotation lock 0
wm user-rotation lock 1
singularity
  • 147
  • 1
  • 11
Shailendra Yadav
  • 1,822
  • 1
  • 12
  • 16