android 야간 모드

7.0 부터 구 글 은 화면 색 채 를 부 드 러 운 호박색 으로 바 꾸 는 야간 모드 를 제 공 했 지만 이 모드 는 하드웨어 지원 이 필요 하기 때문에 모든 장치 에서 사용 할 수 있 는 것 도 아니 고 흔 하지 않다.
관련 코드:\\frameworks\base\services\\core\java\\com\android\server\\display\\NightDisplayService. java\\frameworks\\base\\core\\java\com\android\\internal\\app\NightDisplayController. java\\frameworks\\base\core\res\\res\\value\config. xml
설정 중 관련 코드:\\packages\\apps\\Settings\\src\\com\android\\settings\\display\\NightDisplaySettings. java
야간 모드 의 시작 과 종료, 관련 방법 코드 의 호출 은 설정 중의 야간 모드 를 완전히 참고 할 수 있 습 니 다. config 에서 기본 설정 은 다음 과 같 습 니 다. 설정 에서 볼 수 있 듯 이 야간 모드 가 효력 이 발생 할 수 있 는 지, 주로 하드웨어 에 의존 합 니 다. HWC 도입 기능 이 있 는 지, 전기 소모, 성능, 호환성 을 증가 하지 않 은 상황 에서 색상 매트릭스 전환 작업 을 실현 할 수 있 습 니 다.
//       ,     :

false

    
    1

    
    false

    
    @bool/config_setColorTransformAccelerated

    
    0

    
    79200000

    
    21600000

    
    2596

    
    2850

    
    4082

    
         0.0
         0.0
         1.0
         -0.00000000962353339
         0.000153045476
         0.390782778
         -0.0000000189359041
         0.000302412211
         -0.198650895
    

    
         0.0
         0.0
         1.0
         -0.00000000962353339
         0.000153045476
         0.390782778
         -0.0000000189359041
         0.000302412211
         -0.198650895
    

설정 중 야간 모드 의 모든 설정 과 조작 은 NightDisplayController 에서 이 루어 집 니 다. 그 중에서 주요 방법 은 다음 과 같 습 니 다.
//     
public boolean setActivated(boolean activated) {
        if (isActivated() != activated) {
            Secure.putStringForUser(mContext.getContentResolver(),
                    Secure.NIGHT_DISPLAY_LAST_ACTIVATED_TIME,
                    LocalDateTime.now().toString(),
                    mUserId);
        }
        return Secure.putIntForUser(mContext.getContentResolver(),
                Secure.NIGHT_DISPLAY_ACTIVATED, activated ? 1 : 0, mUserId);
    }

//    ,   ,   ,       ,           
public @AutoMode int getAutoMode() {
        int autoMode = Secure.getIntForUser(mContext.getContentResolver(),
                Secure.NIGHT_DISPLAY_AUTO_MODE, -1, mUserId);
        if (autoMode == -1) {
            if (DEBUG) {
                Slog.d(TAG, "Using default value for setting: " + Secure.NIGHT_DISPLAY_AUTO_MODE);
            }
            autoMode = mContext.getResources().getInteger(
                    R.integer.config_defaultNightDisplayAutoMode);
        }

        if (autoMode != AUTO_MODE_DISABLED
                && autoMode != AUTO_MODE_CUSTOM
                && autoMode != AUTO_MODE_TWILIGHT) {
            Slog.e(TAG, "Invalid autoMode: " + autoMode);
            autoMode = AUTO_MODE_DISABLED;
        }

        return autoMode;
    }
//    , config   ,  4082,  2596
public boolean setColorTemperature(int colorTemperature) {
        return Secure.putIntForUser(mContext.getContentResolver(),
            Secure.NIGHT_DISPLAY_COLOR_TEMPERATURE, colorTemperature, mUserId);
    }
//

좋은 웹페이지 즐겨찾기