android display.java_NightDisplaySettings.java

/*

* Copyright (C) 2016 The Android Open Source Project

*

* Licensed under the Apache License, Version 2.0 (the "License");

* you may not use this file except in compliance with the License.

* You may obtain a copy of the License at

*

* http://www.apache.org/licenses/LICENSE-2.0

*

* Unless required by applicable law or agreed to in writing, software

* distributed under the License is distributed on an "AS IS" BASIS,

* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.

* See the License for the specific language governing permissions and

* limitations under the License.

*/

package com.android.settings.display;

import android.app.Dialog;

import android.app.TimePickerDialog;

import android.app.settings.SettingsEnums;

import android.content.Context;

import android.hardware.display.ColorDisplayManager;

import android.hardware.display.NightDisplayListener;

import android.os.Bundle;

import android.provider.SearchIndexableResource;

import androidx.preference.Preference;

import com.android.settings.R;

import com.android.settings.dashboard.DashboardFragment;

import com.android.settings.search.BaseSearchIndexProvider;

import com.android.settings.search.Indexable;

import com.android.settingslib.core.AbstractPreferenceController;

import com.android.settingslib.search.SearchIndexable;

import java.time.LocalTime;

import java.util.ArrayList;

import java.util.List;

/**

* Settings screen for Night display.

*/

@SearchIndexable(forTarget = SearchIndexable.ALL & ~SearchIndexable.ARC)

public class NightDisplaySettings extends DashboardFragment

implements NightDisplayListener.Callback {

private static final String TAG = "NightDisplaySettings";

private static final int DIALOG_START_TIME = 0;

private static final int DIALOG_END_TIME = 1;

private ColorDisplayManager mColorDisplayManager;

private NightDisplayListener mNightDisplayListener;

@Override

public void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

final Context context = getContext();

mColorDisplayManager = context.getSystemService(ColorDisplayManager.class);

mNightDisplayListener = new NightDisplayListener(context);

}

@Override

public void onStart() {

super.onStart();

// Listen for changes only while visible.

mNightDisplayListener.setCallback(this);

}

@Override

public void onStop() {

super.onStop();

// Stop listening for state changes.

mNightDisplayListener.setCallback(null);

}

@Override

public boolean onPreferenceTreeClick(Preference preference) {

if ("night_display_end_time".equals(preference.getKey())) {

showDialog(DIALOG_END_TIME);

return true;

} else if ("night_display_start_time".equals(preference.getKey())) {

showDialog(DIALOG_START_TIME);

return true;

}

return super.onPreferenceTreeClick(preference);

}

@Override

public Dialog onCreateDialog(final int dialogId) {

if (dialogId == DIALOG_START_TIME || dialogId == DIALOG_END_TIME) {

final LocalTime initialTime;

if (dialogId == DIALOG_START_TIME) {

initialTime = mColorDisplayManager.getNightDisplayCustomStartTime();

} else {

initialTime = mColorDisplayManager.getNightDisplayCustomEndTime();

}

final Context context = getContext();

final boolean use24HourFormat = android.text.format.DateFormat.is24HourFormat(context);

return new TimePickerDialog(context, (view, hourOfDay, minute) -> {

final LocalTime time = LocalTime.of(hourOfDay, minute);

if (dialogId == DIALOG_START_TIME) {

mColorDisplayManager.setNightDisplayCustomStartTime(time);

} else {

mColorDisplayManager.setNightDisplayCustomEndTime(time);

}

}, initialTime.getHour(), initialTime.getMinute(), use24HourFormat);

}

return super.onCreateDialog(dialogId);

}

@Override

public int getDialogMetricsCategory(int dialogId) {

switch (dialogId) {

case DIALOG_START_TIME:

return SettingsEnums.DIALOG_NIGHT_DISPLAY_SET_START_TIME;

case DIALOG_END_TIME:

return SettingsEnums.DIALOG_NIGHT_DISPLAY_SET_END_TIME;

default:

return 0;

}

}

@Override

public void onActivated(boolean activated) {

// Update activated and temperature preferences.

updatePreferenceStates();

}

@Override

public void onAutoModeChanged(int autoMode) {

// Update auto mode, start time, and end time preferences.

updatePreferenceStates();

}

@Override

public void onColorTemperatureChanged(int colorTemperature) {

// Update temperature preference.

updatePreferenceStates();

}

@Override

public void onCustomStartTimeChanged(LocalTime startTime) {

// Update start time preference.

updatePreferenceStates();

}

@Override

public void onCustomEndTimeChanged(LocalTime endTime) {

// Update end time preference.

updatePreferenceStates();

}

@Override

protected int getPreferenceScreenResId() {

return R.xml.night_display_settings;

}

@Override

public int getMetricsCategory() {

return SettingsEnums.NIGHT_DISPLAY_SETTINGS;

}

@Override

public int getHelpResource() {

return R.string.help_url_night_display;

}

@Override

protected String getLogTag() {

return TAG;

}

@Override

protected ListcreatePreferenceControllers(Context context) {

return buildPreferenceControllers(context);

}

private static ListbuildPreferenceControllers(Context context) {

final Listcontrollers = new ArrayList<>(1);

controllers.add(new NightDisplayFooterPreferenceController(context));

return controllers;

}

public static final Indexable.SearchIndexProvider SEARCH_INDEX_DATA_PROVIDER =

new BaseSearchIndexProvider() {

@Override

public ListgetXmlResourcesToIndex(Context context,

boolean enabled) {

final ArrayListresult = new ArrayList<>();

final SearchIndexableResource sir = new SearchIndexableResource(context);

sir.xmlResId = R.xml.night_display_settings;

result.add(sir);

return result;

}

@Override

protected boolean isPageSearchEnabled(Context context) {

return ColorDisplayManager.isNightDisplayAvailable(context);

}

@Override

public ListcreatePreferenceControllers(

Context context) {

return buildPreferenceControllers(context);

}

};

}

Java程序

|

214行

|

7.12 KB

/*

* Copyright (C) 2016 The Android Open Source Project

*

* Licensed under the Apache License, Version 2.0 (the "License");

* you may not use this file except in compliance with the License.

* You may obtain a copy of the License at

*

* http://www.apache.org/licenses/LICENSE-2.0

*

* Unless required by applicable law or agreed to in writing, software

* distributed under the License is distributed on an "AS IS" BASIS,

* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.

* See the License for the specific language governing permissions and

* limitations under the License.

*/

package com.android.settings.display;

import android.app.Dialog;

import android.app.TimePickerDialog;

import android.app.settings.SettingsEnums;

import android.content.Context;

import android.hardware.display.ColorDisplayManager;

import android.hardware.display.NightDisplayListener;

import android.os.Bundle;

import android.provider.SearchIndexableResource;

import androidx.preference.Preference;

import com.android.settings.R;

import com.android.settings.dashboard.DashboardFragment;

import com.android.settings.search.BaseSearchIndexProvider;

import com.android.settings.search.Indexable;

import com.android.settingslib.core.AbstractPreferenceController;

import com.android.settingslib.search.SearchIndexable;

import java.time.LocalTime;

import java.util.ArrayList;

import java.util.List;

/**

* Settings screen for Night display.

*/

@SearchIndexable(forTarget = SearchIndexable.ALL & ~SearchIndexable.ARC)

public class NightDisplaySettings extends DashboardFragment

implements NightDisplayListener.Callback {

private static final String TAG = "NightDisplaySettings";

private static final int DIALOG_START_TIME = 0;

private static final int DIALOG_END_TIME = 1;

private ColorDisplayManager mColorDisplayManager;

private NightDisplayListener mNightDisplayListener;

@Override

public void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

final Context context = getContext();

mColorDisplayManager = context.getSystemService(ColorDisplayManager.class);

mNightDisplayListener = new NightDisplayListener(context);

}

@Override

public void onStart() {

super.onStart();

// Listen for changes only while visible.

mNightDisplayListener.setCallback(this);

}

@Override

public void onStop() {

super.onStop();

// Stop listening for state changes.

mNightDisplayListener.setCallback(null);

}

@Override

public boolean onPreferenceTreeClick(Preference preference) {

if ("night_display_end_time".equals(preference.getKey())) {

showDialog(DIALOG_END_TIME);

return true;

} else if ("night_display_start_time".equals(preference.getKey())) {

showDialog(DIALOG_START_TIME);

return true;

}

return super.onPreferenceTreeClick(preference);

}

@Override

public Dialog onCreateDialog(final int dialogId) {

if (dialogId == DIALOG_START_TIME || dialogId == DIALOG_END_TIME) {

final LocalTime initialTime;

if (dialogId == DIALOG_START_TIME) {

initialTime = mColorDisplayManager.getNightDisplayCustomStartTime();

} else {

initialTime = mColorDisplayManager.getNightDisplayCustomEndTime();

}

final Context context = getContext();

final boolean use24HourFormat = android.text.format.DateFormat.is24HourFormat(context);

return new TimePickerDialog(context, (view, hourOfDay, minute) -> {

final LocalTime time = LocalTime.of(hourOfDay, minute);

if (dialogId == DIALOG_START_TIME) {

mColorDisplayManager.setNightDisplayCustomStartTime(time);

} else {

mColorDisplayManager.setNightDisplayCustomEndTime(time);

}

}, initialTime.getHour(), initialTime.getMinute(), use24HourFormat);

}

return super.onCreateDialog(dialogId);

}

@Override

public int getDialogMetricsCategory(int dialogId) {

switch (dialogId) {

case DIALOG_START_TIME:

return SettingsEnums.DIALOG_NIGHT_DISPLAY_SET_START_TIME;

case DIALOG_END_TIME:

return SettingsEnums.DIALOG_NIGHT_DISPLAY_SET_END_TIME;

default:

return 0;

}

}

@Override

public void onActivated(boolean activated) {

// Update activated and temperature preferences.

updatePreferenceStates();

}

@Override

public void onAutoModeChanged(int autoMode) {

// Update auto mode, start time, and end time preferences.

updatePreferenceStates();

}

@Override

public void onColorTemperatureChanged(int colorTemperature) {

// Update temperature preference.

updatePreferenceStates();

}

@Override

public void onCustomStartTimeChanged(LocalTime startTime) {

// Update start time preference.

updatePreferenceStates();

}

@Override

public void onCustomEndTimeChanged(LocalTime endTime) {

// Update end time preference.

updatePreferenceStates();

}

@Override

protected int getPreferenceScreenResId() {

return R.xml.night_display_settings;

}

@Override

public int getMetricsCategory() {

return SettingsEnums.NIGHT_DISPLAY_SETTINGS;

}

@Override

public int getHelpResource() {

return R.string.help_url_night_display;

}

@Override

protected String getLogTag() {

return TAG;

}

@Override

protected List createPreferenceControllers(Context context) {

return buildPreferenceControllers(context);

}

private static List buildPreferenceControllers(Context context) {

final List controllers = new ArrayList<>(1);

controllers.add(new NightDisplayFooterPreferenceController(context));

return controllers;

}

public static final Indexable.SearchIndexProvider SEARCH_INDEX_DATA_PROVIDER =

new BaseSearchIndexProvider() {

@Override

public List getXmlResourcesToIndex(Context context,

boolean enabled) {

final ArrayList result = new ArrayList<>();

final SearchIndexableResource sir = new SearchIndexableResource(context);

sir.xmlResId = R.xml.night_display_settings;

result.add(sir);

return result;

}

@Override

protected boolean isPageSearchEnabled(Context context) {

return ColorDisplayManager.isNightDisplayAvailable(context);

}

@Override

public List createPreferenceControllers(

Context context) {

return buildPreferenceControllers(context);

}

};

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值