안녕하세요! 🙌
오늘은 커스텀 안드로이드 기기에서 화면 회전 설정을 코드로 읽어올 때 발생할 수 있는 문제와, 이를 루팅 기기에서 해결하는 방법을 공유하려고 합니다.
🔧 문제 상황
안드로이드 앱에서 아래와 같은 코드로 화면 회전 설정을 읽어오려고 했습니다 :)
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 명령어를 활용하면 루팅 기기에서 간단하게 문제를 해결할 수 있습니다.
궁금한 점이나 추가 질문은 댓글로 남겨주세요! 😊
'개발 > Android' 카테고리의 다른 글
| 📱 Android 11 커스텀 펌웨어에서 logd 미작동 문제 해결기 (0) | 2025.04.30 |
|---|