Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/tensorflow/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何使用SeekBar以编程方式调整设备亮度?_Java_Android_Android Settings_Screen Brightness - Fatal编程技术网

Java 如何使用SeekBar以编程方式调整设备亮度?

Java 如何使用SeekBar以编程方式调整设备亮度?,java,android,android-settings,screen-brightness,Java,Android,Android Settings,Screen Brightness,我的设置应用程序中有两个seekbar,一个用于声音,一个用于亮度。我的sound seekbar会按照我的要求更改媒体音量,并且在其他活动和应用程序中会保持更改,但在我更改活动后,亮度seekbar不会保持更改,它只会更改“设置”页面中的亮度。我希望实现的是,即使在其他活动和应用程序中,它们也能保持我在“应用程序设置”页面中设置的状态 ApplicationSettings.java public class ApplicationSettings extends AppCompatActiv

我的设置应用程序中有两个seekbar,一个用于声音,一个用于亮度。我的sound seekbar会按照我的要求更改媒体音量,并且在其他活动和应用程序中会保持更改,但在我更改活动后,亮度seekbar不会保持更改,它只会更改“设置”页面中的亮度。我希望实现的是,即使在其他活动和应用程序中,它们也能保持我在“应用程序设置”页面中设置的状态

ApplicationSettings.java

public class ApplicationSettings extends AppCompatActivity {

private SeekBar VolumeSeekbar = null;
private SeekBar BrightnessSeekbar = null;
private AudioManager audioManager = null;
private float BackLightValue;
//Seek bar object
private SeekBar seekBar;
//Variable to store brightness value
private int brightness;
//Content resolver used as a handle to the system's settings
private ContentResolver cResolver;
//Window object, that will store a reference to the current window
private Window window;
TextView txtPerc;



@Override
public void onCreate(Bundle savedInstanceState) {
    setVolumeControlStream(AudioManager.STREAM_MUSIC);
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_application_settings);

    //Instantiate seekbar object
    seekBar = (SeekBar) findViewById(R.id.BrightBar);
    txtPerc = (TextView) findViewById(R.id.txtPercentage);
    //Get the content resolver
    cResolver =  getContentResolver();
    //Get the current window
    window = getWindow();

    VolumeControl();
    BrightnessControl();
}


public void GoToMainScreenButton1 (View view) {
    Intent intentStart = new Intent(this, MainScreen.class);
    startActivity(intentStart);
}

private void VolumeControl() {
    try {
        VolumeSeekbar = (SeekBar) findViewById(R.id.SoundBar);
        audioManager = (AudioManager) getSystemService(Context.AUDIO_SERVICE);
        VolumeSeekbar.setMax(audioManager
                .getStreamMaxVolume(AudioManager.STREAM_MUSIC));
        VolumeSeekbar.setProgress(audioManager
                .getStreamVolume(AudioManager.STREAM_MUSIC));
        VolumeSeekbar.setOnSeekBarChangeListener(new SeekBar.OnSeekBarChangeListener() {
            @Override
            public void onStopTrackingTouch(SeekBar arg0) {
            }
            @Override
            public void onStartTrackingTouch(SeekBar arg0) {
            }
            @Override
            public void onProgressChanged(SeekBar arg0, int progress, boolean arg2) {
                audioManager.setStreamVolume(AudioManager.STREAM_MUSIC,
                        progress, 0);
            }
        });
    } catch (Exception e) {
        e.printStackTrace();
    }

}

private void BrightnessControl() {
    //Set the seekbar range between 0 and 255
    //seek bar settings//
    //sets the range between 0 and 255
    seekBar = (SeekBar) findViewById(R.id.BrightBar);

    seekBar.setMax(255);
    //set the seek bar progress to 1
    seekBar.setKeyProgressIncrement(1);

    try
    {
        //Get the current system brightness
        brightness = Settings.System.getInt(cResolver, Settings.System.SCREEN_BRIGHTNESS);
    }
    catch (Settings.SettingNotFoundException e)
    {
        //Throw an error case it couldn't be retrieved
        Log.e("Error", "Cannot access system brightness");
        e.printStackTrace();
    }

    //Set the progress of the seek bar based on the system's brightness
    seekBar.setProgress(brightness);

    //Register OnSeekBarChangeListener, so it can actually change values
    seekBar.setOnSeekBarChangeListener(new SeekBar.OnSeekBarChangeListener()
    {
        public void onStopTrackingTouch(SeekBar seekBar)
        {
            //Set the system brightness using the brightness variable value
            Settings.System.putInt(cResolver, Settings.System.SCREEN_BRIGHTNESS, brightness);
            //Get the current window attributes
            WindowManager.LayoutParams layoutpars = window.getAttributes();
            //Set the brightness of this window
            layoutpars.screenBrightness = brightness / (float)255;
            //Apply attribute changes to this window
            window.setAttributes(layoutpars);
        }
        public void onStartTrackingTouch(SeekBar seekBar)
        {
            //Nothing handled here
        }
        public void onProgressChanged(SeekBar seekBar, int progress, boolean fromUser)
        {
            //Set the minimal brightness level
            //if seek bar is 20 or any value below
            if(progress<=20)
            {
                //Set the brightness to 20
                brightness=20;
            }
            else //brightness is greater than 20
            {
                //Set brightness variable based on the progress bar
                brightness = progress;
            }
            //Calculate the brightness percentage
            float perc = (brightness /(float)255)*100;
            //Set the brightness percentage
            txtPerc.setText((int)perc +" %");
        }
    });
}
}
公共类应用程序设置扩展了AppCompatActivity{
私有SeekBar VolumeSeekbar=null;
私有SeekBar亮度SeekBar=null;
专用AudioManager AudioManager=null;
私有价值;
//搜索条对象
私人SeekBar SeekBar;
//用于存储亮度值的变量
亮度;
//用作系统设置句柄的内容解析程序
私有内容解析程序cResolver;
//窗口对象,该对象将存储对当前窗口的引用
私人窗口;
TextView-txtPerc;
@凌驾
创建时的公共void(Bundle savedInstanceState){
setVolumeControlStream(AudioManager.STREAM_MUSIC);
super.onCreate(savedInstanceState);
setContentView(R.layout.activity\u application\u设置);
//实例化seekbar对象
seekBar=(seekBar)findViewById(R.id.BrightBar);
txtPerc=(TextView)findViewById(R.id.txtPercentage);
//获取内容解析器
cResolver=getContentResolver();
//获取当前窗口
window=getWindow();
体积控制();
亮度控制();
}
公共无效GoToMainScreenButton1(视图){
Intent intentStart=newintent(这是MainScreen.class);
startActivity(意向启动);
}
私有void VolumeControl(){
试一试{
VolumeSeekbar=(SeekBar)findViewById(R.id.SoundBar);
audioManager=(audioManager)getSystemService(Context.AUDIO\u服务);
VolumeSeekbar.setMax(音频管理器
.getStreamMaxVolume(AudioManager.STREAM_MUSIC));
VolumeSeekbar.setProgress(audioManager
.getStreamVolume(AudioManager.STREAM_MUSIC));
VolumeSeekbar.setOnSeekBarChangeListener(新的SeekBar.OnSeekBarChangeListener(){
@凌驾
TopTrackingTouch上的公共无效(请参见kbar arg0){
}
@凌驾
开始跟踪触摸时的公共无效(请参见kbar arg0){
}
@凌驾
public void onProgressChanged(参见kbar arg0、int progress、布尔arg2){
audioManager.setStreamVolume(audioManager.STREAM_MUSIC,
进展,0);
}
});
}捕获(例外e){
e、 printStackTrace();
}
}
专用控件(){
//将seekbar范围设置为0到255之间
//搜索栏设置//
//将范围设置为0到255之间
seekBar=(seekBar)findViewById(R.id.BrightBar);
seekBar.setMax(255);
//将搜索栏进度设置为1
seekBar.setKeyProgressIncrement(1);
尝试
{
//获取当前系统亮度
亮度=Settings.System.getInt(cResolver,Settings.System.SCREEN\u亮度);
}
catch(Settings.SettingNotFoundException)
{
//抛出无法检索的错误案例
Log.e(“错误”,“无法访问系统亮度”);
e、 printStackTrace();
}
//根据系统亮度设置搜索栏的进度
seekBar.setProgress(亮度);
//在seekbarchaneglistener上注册,以便它可以实际更改值
seekBar.setOnSeekbarchaneListener(新的seekBar.onSeekbarchaneListener()
{
TopTrackingTouch(SeekBar SeekBar)上的公共无效
{
//使用亮度变量值设置系统亮度
Settings.System.putInt(cResolver,Settings.System.SCREEN\u亮度,亮度);
//获取当前窗口属性
WindowManager.LayoutParams layoutpars=window.getAttributes();
//设置此窗口的亮度
layoutpars.screenBrightness=亮度/(浮动)255;
//将属性更改应用于此窗口
设置属性(layoutpars);
}
开始跟踪触摸时的公共无效(SeekBar SeekBar)
{
//这里什么都没处理
}
public void onProgressChanged(SeekBar-SeekBar、int-progress、boolean-fromUser)
{
//设置最小亮度级别
//如果搜索栏为20或以下任何值
如果(进展)

您正在处理自动亮度模式吗

Settings.System.putInt(cResolver, Settings.System.SCREEN_BRIGHTNESS_MODE, Settings.System.SCREEN_BRIGHTNESS_MODE_MANUAL);
你也有清单许可吗

<uses-permission android:name="android.permission.WRITE_SETTINGS"></uses-permission>


PS:我想对这些问题发表意见,但还不能发表意见。对不起。

您正在处理自动亮度模式吗

Settings.System.putInt(cResolver, Settings.System.SCREEN_BRIGHTNESS_MODE, Settings.System.SCREEN_BRIGHTNESS_MODE_MANUAL);
你也有清单许可吗

<uses-permission android:name="android.permission.WRITE_SETTINGS"></uses-permission>


PS:我想评论这些问题,但还不能评论。抱歉。

我的清单中已经有写入设置,我现在将检查手动模式,干杯。写入设置已经在我的清单中,我现在将检查手动模式,干杯。