Android PowerManager (앱 강제로 깨우기)
2024. 5. 13. 13:43ㆍAndroid
반응형
안녕하세요
앱을 개발하다 보면 Doze Mode 에서 앱을 강제로 깨워야 할경우가 있습니다.
이럴때는 PowerManager api 를 사용하면 됩니다.
사용하기 앞서 주의사항
PowerManager api 는 디바이스의 전원을 관리하는 api 이므로 배터리와 연관이 큽니다.
자칫 잘못 사용했을경우 디바이스 베터리 소모가 상당하기에
PowerManager api 를 정말 사용해야 하는지 많은 고민을 하고 사용하는걸 강조 드립니다.
AndroidManifest.xml
<uses-permission android:name="android.permission.WAKE_LOCK" />
java
PowerManager powerManager = (PowerManager) getApplicationContext().getSystemService(Context.POWER_SERVICE);
PowerManager.WakeLock wakeLock = powerManager.newWakeLock(PowerManager.SCREEN_BRIGHT_WAKE_LOCK | PowerManager.ACQUIRE_CAUSES_WAKEUP, "testApp:tag");
wakeLock.acquire(1000);//1초 동안 화면 켜짐
kotlin
val powerManager = applicationContext.getSystemService(POWER_SERVICE) as PowerManager
val wakeLock = powerManager.newWakeLock(PowerManager.SCREEN_BRIGHT_WAKE_LOCK or PowerManager.ACQUIRE_CAUSES_WAKEUP, "testApp:tag")
wakeLock.acquire(1000) //1초 동안 화면 켜짐
acquire 를 하였다면 꼭 release() 를 해줘야됩니다.
예제 코드
private lateinit var powerManager :PowerManager
private lateinit var wakeLock : WakeLock
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
binding = ActivityMainBinding.inflate(layoutInflater)
setContentView(binding.root)
powerManager = applicationContext.getSystemService(POWER_SERVICE) as PowerManager
wakeLock = powerManager.newWakeLock(PowerManager.SCREEN_BRIGHT_WAKE_LOCK or PowerManager.ACQUIRE_CAUSES_WAKEUP, "testApp:tag")
}
override fun onResume() {
super.onResume()
wakeLock.acquire(1000) //1초 동안 화면 켜짐
}
override fun onPause() {
super.onPause()
if(wakeLock.isHeld){
wakeLock.release()
}
}
이런식으로 사용을 하면됩니다.
최근에 PowerManager 에 있는 상수 들이 많이 Deprecated 가 되었습니다.
구글에서 지속적으로 배터리 , DozeMode 관련된 코드 및 정책들이 바뀌고 있기에 이부분에 대해 한번 봐두시면 도움이됩니다.
https://developer.android.com/reference/android/os/PowerManager
PowerManager | Android Developers
developer.android.com
읽어주셔서 감사합니다.
반응형
'Android' 카테고리의 다른 글
Android 구조 개편기 기본구조 -> MVVM → 클린아키텍처 + 멀티모듈 → Compose + MVI 현업 적용기 (2부 클린아키텍처) (0) | 2025.04.27 |
---|---|
Android 구조 개편기 기본구조 -> MVVM → 클린아키텍처 + 멀티모듈 → Compose + MVI 현업 적용기 (1부 MVVM 편) (1) | 2025.04.20 |
Android DeepLink onNewIntent (LifeCycle 생명주기) (0) | 2024.05.10 |
Android Viewpager2 Auto Scroll Duration (자동 스크롤 속도 조절) java 버전 (0) | 2024.05.03 |
Android Compose GlideImage 이미지 미리 캐싱하기 (preload) (2) | 2024.04.26 |