1d91964dd49bc0e6a49ff43fb99c70ad2eca6daddroger xue/* 2d91964dd49bc0e6a49ff43fb99c70ad2eca6daddroger xue * Copyright (C) 2017 The Android Open Source Project 3d91964dd49bc0e6a49ff43fb99c70ad2eca6daddroger xue * 4d91964dd49bc0e6a49ff43fb99c70ad2eca6daddroger xue * Licensed under the Apache License, Version 2.0 (the "License"); 5d91964dd49bc0e6a49ff43fb99c70ad2eca6daddroger xue * you may not use this file except in compliance with the License. 6d91964dd49bc0e6a49ff43fb99c70ad2eca6daddroger xue * You may obtain a copy of the License at 7d91964dd49bc0e6a49ff43fb99c70ad2eca6daddroger xue * 8d91964dd49bc0e6a49ff43fb99c70ad2eca6daddroger xue * http://www.apache.org/licenses/LICENSE-2.0 9d91964dd49bc0e6a49ff43fb99c70ad2eca6daddroger xue * 10d91964dd49bc0e6a49ff43fb99c70ad2eca6daddroger xue * Unless required by applicable law or agreed to in writing, software 11d91964dd49bc0e6a49ff43fb99c70ad2eca6daddroger xue * distributed under the License is distributed on an "AS IS" BASIS, 12d91964dd49bc0e6a49ff43fb99c70ad2eca6daddroger xue * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13d91964dd49bc0e6a49ff43fb99c70ad2eca6daddroger xue * See the License for the specific language governing permissions and 14d91964dd49bc0e6a49ff43fb99c70ad2eca6daddroger xue * limitations under the License 15d91964dd49bc0e6a49ff43fb99c70ad2eca6daddroger xue */ 16d91964dd49bc0e6a49ff43fb99c70ad2eca6daddroger xue 17d91964dd49bc0e6a49ff43fb99c70ad2eca6daddroger xuepackage com.android.car.settings.display; 18d91964dd49bc0e6a49ff43fb99c70ad2eca6daddroger xue 19d91964dd49bc0e6a49ff43fb99c70ad2eca6daddroger xueimport static android.provider.Settings.System.SCREEN_BRIGHTNESS; 20d91964dd49bc0e6a49ff43fb99c70ad2eca6daddroger xue 21d91964dd49bc0e6a49ff43fb99c70ad2eca6daddroger xueimport android.content.Context; 22d91964dd49bc0e6a49ff43fb99c70ad2eca6daddroger xueimport android.provider.Settings; 23cfcd027ec6ded6dbb8c73d62f87bb1ce91355fdeLujiang Xueimport android.widget.SeekBar; 24cfcd027ec6ded6dbb8c73d62f87bb1ce91355fdeLujiang Xueimport android.widget.SeekBar.OnSeekBarChangeListener; 25cfcd027ec6ded6dbb8c73d62f87bb1ce91355fdeLujiang Xue 26cfcd027ec6ded6dbb8c73d62f87bb1ce91355fdeLujiang Xueimport androidx.car.widget.SeekbarListItem; 27d91964dd49bc0e6a49ff43fb99c70ad2eca6daddroger xue 28d91964dd49bc0e6a49ff43fb99c70ad2eca6daddroger xueimport com.android.car.settings.R; 294f12d9289b1944f56e85905e29a651d15e4910f9Rodrigo Lagosimport com.android.car.settings.common.Logger; 30d91964dd49bc0e6a49ff43fb99c70ad2eca6daddroger xue 31d91964dd49bc0e6a49ff43fb99c70ad2eca6daddroger xue/** 32d91964dd49bc0e6a49ff43fb99c70ad2eca6daddroger xue * A LineItem that displays and sets display brightness. 33d91964dd49bc0e6a49ff43fb99c70ad2eca6daddroger xue */ 34cfcd027ec6ded6dbb8c73d62f87bb1ce91355fdeLujiang Xuepublic class BrightnessLineItem extends SeekbarListItem { 354f12d9289b1944f56e85905e29a651d15e4910f9Rodrigo Lagos private static final Logger LOG = new Logger(BrightnessLineItem.class); 36d91964dd49bc0e6a49ff43fb99c70ad2eca6daddroger xue private static final int MAX_BRIGHTNESS = 255; 37d91964dd49bc0e6a49ff43fb99c70ad2eca6daddroger xue private final Context mContext; 38d91964dd49bc0e6a49ff43fb99c70ad2eca6daddroger xue 39cfcd027ec6ded6dbb8c73d62f87bb1ce91355fdeLujiang Xue /** 40cfcd027ec6ded6dbb8c73d62f87bb1ce91355fdeLujiang Xue * Handles brightness change from user 41cfcd027ec6ded6dbb8c73d62f87bb1ce91355fdeLujiang Xue */ 42cfcd027ec6ded6dbb8c73d62f87bb1ce91355fdeLujiang Xue private SeekBar.OnSeekBarChangeListener mOnSeekBarChangeListener = 43cfcd027ec6ded6dbb8c73d62f87bb1ce91355fdeLujiang Xue new OnSeekBarChangeListener() { 44cfcd027ec6ded6dbb8c73d62f87bb1ce91355fdeLujiang Xue @Override 45cfcd027ec6ded6dbb8c73d62f87bb1ce91355fdeLujiang Xue public void onStartTrackingTouch(SeekBar seekBar) { 46cfcd027ec6ded6dbb8c73d62f87bb1ce91355fdeLujiang Xue // no-op 47cfcd027ec6ded6dbb8c73d62f87bb1ce91355fdeLujiang Xue } 48cfcd027ec6ded6dbb8c73d62f87bb1ce91355fdeLujiang Xue 49cfcd027ec6ded6dbb8c73d62f87bb1ce91355fdeLujiang Xue @Override 50cfcd027ec6ded6dbb8c73d62f87bb1ce91355fdeLujiang Xue public void onStopTrackingTouch(SeekBar seekBar) { 51cfcd027ec6ded6dbb8c73d62f87bb1ce91355fdeLujiang Xue // no-op 52cfcd027ec6ded6dbb8c73d62f87bb1ce91355fdeLujiang Xue } 53cfcd027ec6ded6dbb8c73d62f87bb1ce91355fdeLujiang Xue 54cfcd027ec6ded6dbb8c73d62f87bb1ce91355fdeLujiang Xue @Override 55cfcd027ec6ded6dbb8c73d62f87bb1ce91355fdeLujiang Xue public void onProgressChanged(SeekBar seekBar, int progress, boolean fromUser) { 56cfcd027ec6ded6dbb8c73d62f87bb1ce91355fdeLujiang Xue Settings.System.putInt( 57cfcd027ec6ded6dbb8c73d62f87bb1ce91355fdeLujiang Xue mContext.getContentResolver(), SCREEN_BRIGHTNESS, progress); 58cfcd027ec6ded6dbb8c73d62f87bb1ce91355fdeLujiang Xue } 59cfcd027ec6ded6dbb8c73d62f87bb1ce91355fdeLujiang Xue }; 60cfcd027ec6ded6dbb8c73d62f87bb1ce91355fdeLujiang Xue 61d91964dd49bc0e6a49ff43fb99c70ad2eca6daddroger xue public BrightnessLineItem(Context context) { 62cfcd027ec6ded6dbb8c73d62f87bb1ce91355fdeLujiang Xue super(context); 63d91964dd49bc0e6a49ff43fb99c70ad2eca6daddroger xue mContext = context; 64cfcd027ec6ded6dbb8c73d62f87bb1ce91355fdeLujiang Xue setMax(MAX_BRIGHTNESS); 65cfcd027ec6ded6dbb8c73d62f87bb1ce91355fdeLujiang Xue setProgress(getSeekbarValue(context)); 66cfcd027ec6ded6dbb8c73d62f87bb1ce91355fdeLujiang Xue setOnSeekBarChangeListener(mOnSeekBarChangeListener); 67cfcd027ec6ded6dbb8c73d62f87bb1ce91355fdeLujiang Xue setText(context.getString(R.string.brightness)); 68d91964dd49bc0e6a49ff43fb99c70ad2eca6daddroger xue } 69d91964dd49bc0e6a49ff43fb99c70ad2eca6daddroger xue 70cfcd027ec6ded6dbb8c73d62f87bb1ce91355fdeLujiang Xue private static int getSeekbarValue(Context context) { 71d91964dd49bc0e6a49ff43fb99c70ad2eca6daddroger xue int currentBrightness = 0; 72d91964dd49bc0e6a49ff43fb99c70ad2eca6daddroger xue try { 73cfcd027ec6ded6dbb8c73d62f87bb1ce91355fdeLujiang Xue currentBrightness = Settings.System.getInt(context.getContentResolver(), 74d91964dd49bc0e6a49ff43fb99c70ad2eca6daddroger xue SCREEN_BRIGHTNESS); 75d91964dd49bc0e6a49ff43fb99c70ad2eca6daddroger xue } catch (Settings.SettingNotFoundException e) { 764f12d9289b1944f56e85905e29a651d15e4910f9Rodrigo Lagos LOG.w("Can't find setting for SCREEN_BRIGHTNESS."); 77d91964dd49bc0e6a49ff43fb99c70ad2eca6daddroger xue } 78d91964dd49bc0e6a49ff43fb99c70ad2eca6daddroger xue return currentBrightness; 79d91964dd49bc0e6a49ff43fb99c70ad2eca6daddroger xue } 80d91964dd49bc0e6a49ff43fb99c70ad2eca6daddroger xue} 81