Android Weekly

Android Weekly #-585 "권한없이 화면 밝기 설정"

베블렌 2023. 9. 1. 00:16

8월 4주차에는 제가 현재 진행중인 프로젝트와 관련된 기사가 있어 이를 작성합니다.

 

https://blog.blundellapps.co.uk/set-activity-screen-brightness-without-permission/

 

Set Activity Screen Brightness without Permission | Blundell

I wanted to brighten the screen, but all articles said you needed Android permissions. Codswallop! Here’s how! The reason I needed screen brightness without Android permissions was so that QR codes could have the most chance of successful scanning (whils

blog.blundellapps.co.uk

 

배경 및 문제점

 

QR코드 스캔의 성공률을 높이기 위해 화면의 밝기를 높이고자 했는데 대부분의 기존 글들은 Android 권한이 필요함.
android.permission.WRITE_SETTINGS
보통 다들 그렇게하고 공식문서에도 이러한 권한 요청 사용방식의 예시로 화면밝기를 말하고 있음.
그리고 밝기기능 외에 개발 중인 애플리케이션에 필요하지 않는 권한일 가능성이 꽤나 있음.

해결책

 

window.attributes = window.attributes.also { 
    it.screenBrightness = 1f 
}

 

설명

 

"window" : "Activity"의 전체화면, 안드로이드에서 UI를 보여주는 뷰.
"Activity" : 앱에서 사용자와 상호작용하는 주 화면. 자신만의 "window"를 가지고 있음
"attributes" :  "window"의 속성들을 포함하고 있는 객체. 여기에서 화면의 밝기 등의 속성을 포함

".also" : Kotlin에서 제공하는 확장 함수. 기존 객체를 수정하지 않고, 해당 객체에 대해 작업을 하고자 할 때 사용

 

결국 활동이 시작되었을 때 밝기가 변하고, 더 이상 활동이 되지 않을 때 밝기가 자동으로 초기화되는 과정을 만들어 낸다.

 

* 추가 정보


'BRIGHTNESS_OVERRIDE_FULL' 에 대한 상수는 아래를 참조

https://developer.android.com/reference/android/view/WindowManager.LayoutParams#BRIGHTNESS_OVERRIDE_FULL

 

WindowManager.LayoutParams  |  Android Developers

 

developer.android.com

 

 

정리

 

고속버스티켓 어플 "티머니go"의 경우 QR코드 화면에서 화면 밝기를 최대로 하기 위해 권한 설정을 받고있습니다.(지금 제가 쓰고있는 어플 버전 기준). 이와같이 바코드나 qr코드를 이용한 애플리케이션을 만들 때 화면 밝기를 최대로 밝혀주는 방식을 사용하는 것이 사용자에게 편리함을 가져다줍니다.

그러나  편리함을 주기위해 권한요청이라는 새로운 불편함을 주는 것, 권한요청의 최소화를 통한 앱의 신뢰성 등을 위해 권한없이 밝기를 변경하는 것은 굉장히 도움이 되는 글인 것 같습니다.

현재 기프티콘 관련 프로젝트를 진행중인데 도움이 될 듯하다!

 

 

 

 

 

https://androidweekly.net/

 

Android Weekly - Free weekly Android & Kotlin development newsletter

Android Weekly - Free weekly Android & Kotlin development newsletter

androidweekly.net