0

我在制作应用程序以将我的 android 手机屏幕亮度降低到项目的正常水平以下时遇到了很多问题。我做了很多研究并制作了一个程序。该程序确实会降低手机的亮度,但不会保留更改,因为关闭时活动会丢失。我想让活动在后台保持活跃。我知道我必须使用该服务,但我无法实现它。所以,我的程序是:

import android.app.Service;
import android.content.Intent;
import android.os.Bundle;
import android.os.IBinder;
import android.provider.Settings;
import android.provider.Settings.SettingNotFoundException;
import android.app.Activity;
import android.support.annotation.Nullable;
import android.view.Menu;
import android.view.Window;
import android.view.WindowManager;
import android.widget.SeekBar;
import android.widget.SeekBar.OnSeekBarChangeListener;

public class MainActivity extends Activity {

    private SeekBar seekBar;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        seekBar = (SeekBar) findViewById(R.id.seekBar1);
        seekBar.setMax(200);

        float curBrightnessValue = 0;
        try {
            curBrightnessValue = android.provider.Settings.System.getInt(
                    getContentResolver(),
                    android.provider.Settings.System.SCREEN_BRIGHTNESS);
        } catch (SettingNotFoundException e) {
            e.printStackTrace();
        }

        int screen_brightness = (int) curBrightnessValue;
        seekBar.setProgress(screen_brightness);
        seekBar.setOnSeekBarChangeListener(new OnSeekBarChangeListener() {
            int progress = 0;

            @Override
            public void onProgressChanged(SeekBar seekBar, int progresValue,
                                          boolean fromUser) {
                progress = progresValue;
            }

            @Override
            public void onStartTrackingTouch(SeekBar seekBar) {
                // Do something here,
                // if you want to do anything at the start of
                // touching the seekbar
            }



            @Override
            public void onStopTrackingTouch(SeekBar seekBar) {
                android.provider.Settings.System.putInt(getContentResolver(),
                        String.valueOf(Settings.System.SCREEN_BRIGHTNESS_MODE_MANUAL),progress);
                android.provider.Settings.System.putInt(getContentResolver(), Settings.System.SCREEN_BRIGHTNESS_MODE, Settings.System.SCREEN_BRIGHTNESS_MODE_MANUAL);
                WindowManager.LayoutParams layoutpars = getWindow().getAttributes();
                layoutpars.screenBrightness = progress / (float)255;
                layoutpars.alpha=0.05f;
                Window window = getWindow();
                window.setAttributes(layoutpars);
                //window.addFlags(WindowManager.LayoutParams.FLAG_NOT_TOUCHABLE);
                window.setDimAmount((float) 1.0) ;
                window.setFlags(WindowManager.LayoutParams.FLAG_DIM_BEHIND,
                        WindowManager.LayoutParams.FLAG_DIM_BEHIND);
            }
        });
    }

}

有人可以帮我解决这个问题吗?如果您发现此问题与之前提出的一些问题重复,请也将链接添加到该问题。在建议如何在此实现服务时,请告诉我必须添加该/那些代码行的确切位置。提前致谢。

PS:我是个菜鸟,我发现通过编程而不是阅读教科书上的内容来理解更好。所以,如果你在程序中发现一些非常愚蠢的东西,请不要评判。

4

0 回答 0