개발/Android

안드로이드 화면 회전 안됨 해결 – 루팅 기기에서 강제로 회전 방향 설정하는 법

dev0ju 2025. 5. 16. 12:18

 

안녕하세요! 🙌

오늘은 커스텀 안드로이드 기기에서 화면 회전 설정을 코드로 읽어올 때 발생할 수 있는 문제와, 이를 루팅 기기에서 해결하는 방법을 공유하려고 합니다.


🔧 문제 상황

안드로이드 앱에서 아래와 같은 코드로 화면 회전 설정을 읽어오려고 했습니다 :)

val rotation = Settings.System.getInt(
    contentResolver,
    Settings.System.USER_ROTATION
)

 

예전에는 문제없이 잘 동작했지만, 기기를 초기화한 이후 아래와 같은 예외가 발생했습니다:

android.provider.Settings$SettingNotFoundException: user_rotation
Suppressed: kotlinx.coroutines.internal.DiagnosticCoroutineContextException: [StandaloneCoroutine{Cancelling}@2b7b522, Dispatchers.Main.immediate]

 

이유는 간단합니다.
기기를 초기화하면 user_rotation 값이 시스템 설정에 존재하지 않기 때문!


🛠 해결 방법 (루팅 기기 기준)

루팅된 기기에서는 ADB shell 명령어를 통해 user_rotation 설정을 강제로 추가해 줄 수 있습니다.

✅ 명령어

adb shell settings put system user_rotation 0
  • 0: 세로 고정 (Portrait)
  • 1: 왼쪽으로 회전 (Landscape)
  • 2: 거꾸로 세로 (Reverse Portrait)
  • 3: 오른쪽으로 회전 (Reverse Landscape)

이 명령어를 실행하면 user_rotation 값이 시스템 설정에 추가되며, 이후 앱에서 Settings.System.getInt() 호출이 정상적으로 동작하게 됩니다.


💡 추가 팁

  • adb shell settings get system user_rotation 으로 현재 설정값을 확인할 수 있습니다.
  • 회전 방향과 무관하게 자동회전 기능을 제어하고 싶다면 accelerometer_rotation 값을 함께 설정하는 것이 좋습니다:
adb shell settings put system accelerometer_rotation 0

 

자동회전 관련해서도 앱에서 지정하고 싶다면 아래 처럼 설정할 수 있습니다.

val rotation = Settings.System.getInt(
    contentResolver,
    Settings.System.USER_ROTATION,
    0 // 기본값: 세로 고정
)

 


🔚 마무리

커스텀 기기나 AOSP 기반 시스템에서는 시스템 설정이 초기화되면 앱 동작에 영향을 줄 수 있습니다.
이번 포스트에서 소개한 adb shell settings put 명령어를 활용하면 루팅 기기에서 간단하게 문제를 해결할 수 있습니다.

궁금한 점이나 추가 질문은 댓글로 남겨주세요! 😊