android 야간 모드
6023 단어 안 드 로 이 드 시스템 원본 읽 기 노트
관련 코드:\\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);
}
//