투케이2K

197. (AndroidStudio/android/java) 안드로이드 시스템 화면 밝기 값 가져오기 및 앱 화면 밝기 값 동적 변경 본문

Android

197. (AndroidStudio/android/java) 안드로이드 시스템 화면 밝기 값 가져오기 및 앱 화면 밝기 값 동적 변경

투케이2K 2021. 10. 2. 16:24

[개발 환경 설정]

개발 툴 : AndroidStudio

개발 언어 : java


[소스 코드]

   
 //==================== [액티비티 실행 준비 메소드] ====================
    @Override
    public void onResume(){
        super.onResume();
        Log.d("---","---");
        Log.w("//===========//","================================================");
        Log.d("","\n"+"[A_DisplayLight > onResume() 메소드 : 액티비티 실행 준비 상태]");
        Log.w("//===========//","================================================");
        Log.d("---","---");
        //TODO [외부 브라우저 복귀 시 화면 전환 애니메이션 없애기 위함]
        try {
            overridePendingTransition(0,0);
        }
        catch (Exception e){
            e.printStackTrace();
        }


        //TODO [원본 모바일 화면 디스플레이 밝기 값 가져오기]
        getDisplayLightValue();


        //TODO 동적 화면 밝기 조절 함수 호출
        //setDisplayLightValueChange(0.3);
    }





    //==================== [액티비티 종료 메소드] ====================
    @Override
    public void onDestroy(){
        super.onDestroy();
        Log.d("---","---");
        Log.e("//===========//","================================================");
        Log.d("","\n"+"[A_DisplayLight > onDestroy() 메소드 : 액티비티 종료 상태]");
        Log.e("//===========//","================================================");
        Log.d("---","---");
        //TODO [원래 화면 밝기로 변경]
        try {
            setDisplayLightValueOriginal();
        }
        catch (Exception e){
            e.printStackTrace();
        }
    }
    




    //==================== [현재 모바일 화면 밝기 값 가져오기] ====================
    //TODO [필요한 퍼미션 : 안드로이드 시스템 화면 밝기 값 확인]
    //<uses-permission android:name="android.permission.WRITE_SETTINGS" tools:ignore="ProtectedPermissions" />

    //TODO [필요한 변수]
    private static int sys_value; //TODO 시스템 밝기값은 int 형으로 저장됨
    private static double sys_brightness; //TODO 시스템 밝기값은 int 형으로 저장됨
    private static double sys_Perc = 0; //TODO 시스템 밝기값 퍼센트 저장
    private static WindowManager.LayoutParams params; //TODO 윈도우 매니저 객체 사용
    private static double app_brightness; //TODO 앱 밝기값은 float 형으로 저장됨


    public void getDisplayLightValue(){
        try {
            //TODO [화면 정보 불러오기]
            params = getWindow().getAttributes();

            //TODO [안드로이드 시스템 화면 밝기 설정값 가져 오기 : 0 ~ 255]
            sys_value = android.provider.Settings.System.getInt(getContentResolver(), Settings.System.SCREEN_BRIGHTNESS);
            sys_Perc = (double) sys_value / (double) 255 * 100.0;
            sys_Perc = Double.valueOf(String.format("%.1f", sys_Perc)); // 소수점 한자리까지 출력
            sys_brightness = Double.valueOf(String.format("%.1f", (sys_Perc/100))); // 소수점 한자리까지 출력

            //TODO [앱 화면 밝기 원본 설정 값 지정 : 0 ~ 1]
            app_brightness = Double.valueOf(String.format("%.1f", (sys_Perc/100))); // 소수점 한자리까지 출력

            Log.d("---","---");
            Log.d("//===========//","================================================");
            Log.d("","\n"+"[A_DisplayLight > getDisplayLightValue() 메소드 : 현재 모바일 화면 밝기 값 확인 실시]");
            Log.d("","\n"+"[원본 시스템 화면 밝기 값 : "+String.valueOf(sys_brightness)+"]");
            Log.d("","\n"+"[원본 시스템 화면 밝기 퍼센트 : "+String.valueOf(sys_Perc)+"]");
            Log.d("","\n"+"[원본 앱 화면 밝기 값 : "+String.valueOf(app_brightness)+"]");
            Log.d("//===========//","================================================");
            Log.d("---","---");
        }
        catch (Exception e){
            e.printStackTrace();
        }
    }





    //==================== [모바일 화면 밝기 값 동적 변경] ====================
    public void setDisplayLightValueChange(float value){
        try {
            // [화면 밝기 변경]
            params.screenBrightness = value;
            getWindow().setAttributes(params);
            Log.d("---","---");
            Log.d("//===========//","================================================");
            Log.d("","\n"+"[A_DisplayLight > setDisplayLightValueChange() 메소드 : 모바일 화면 밝기 변경]");
            Log.d("","\n"+"[변경 화면 밝기 값 : "+String.valueOf(value)+"]");
            Log.d("//===========//","================================================");
            Log.d("---","---");
        }
        catch (Exception e){
            e.printStackTrace();
        }
    }





    //==================== [모바일 화면 밝기 값 원본 복구] ====================
    public void setDisplayLightValueOriginal(){
        try {
            // [기존 화면 밝기로 변경]
            params.screenBrightness = (float) app_brightness;
            getWindow().setAttributes(params);
            Log.d("---","---");
            Log.d("//===========//","================================================");
            Log.d("","\n"+"[A_DisplayLight > setDisplayLightValueOriginal() 메소드 : 원래 모바일 화면 밝기로 변경]");
            Log.d("","\n"+"[원본 화면 밝기 값 : "+String.valueOf(app_brightness)+"]");
            Log.d("//===========//","================================================");
            Log.d("---","---");
        }
        catch (Exception e){
            e.printStackTrace();
        }
    }

[결과 출력]


 

반응형
Comments