Android - установка яркости экрана на максимальный уровень

Я новичок в этой области разработки Android. В эти дни я занимаюсь разработкой приложения и хочу установить максимальную яркость экрана после открытия приложения и вернуть его на прежний уровень после выхода из приложения. Может кто-нибудь придумать полный исходный код для этого? Я прочитал почти все темы в stackru относительно этой проблемы. И я не мог понять, где разместить эти предложенные коды. Но если ты сможешь придумать полный код, тогда я смогу понять все. Спасибо!

4 ответа

Решение

Вы можете использовать это

public class MainActivity extends AppCompatActivity {

private int brightness=255;
//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;
@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);

    cResolver = getContentResolver();

    //Get the current window
    window = getWindow();

    try
    {
        // To handle the auto


        Settings.System.putInt(cResolver,
                Settings.System.SCREEN_BRIGHTNESS_MODE, Settings.System.SCREEN_BRIGHTNESS_MODE_MANUAL);
        //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();
    }

    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)100;
    //Apply attribute changes to this window
    window.setAttributes(layoutpars);
 }
}

И самое важное разрешение в манифесте

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

Запрос разрешения записи в API 23

private boolean checkSystemWritePermission() {
boolean retVal = true;
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
    retVal = Settings.System.canWrite(this);
    Log.d(TAG, "Can Write Settings: " + retVal);
    if(retVal){
        Toast.makeText(this, "Write allowed :-)", Toast.LENGTH_LONG).show();
    }else{
        Toast.makeText(this, "Write not allowed :-(", Toast.LENGTH_LONG).show();
       Intent intent = new Intent(Settings.ACTION_MANAGE_WRITE_SETTINGS);
       intent.setData(Uri.parse("package:" + getActivity().getPackageName()));
       startActivity(intent);
    }
  }
 return retVal;
}

Один из моих друзей прислал мне лучший, простой код, чтобы исправить эту проблему, которую он нашел в интернете

Для любителей (таких как я) вы должны ввести приведенный ниже код после "setContentView(R.layout.activity_main);" в методе "Защищено void onCreate(Bundle saveInstanceState) {" в вашем MainActivity.java

    WindowManager.LayoutParams layout = getWindow().getAttributes();
    layout.screenBrightness = 1F;
    getWindow().setAttributes(layout);

Кстати, спасибо @AbdulKawee за ваше время и поддержку, которую вы мне оказали с вашим кодом. действительно ценю это:)

Котлинская версия ответа Санкха Ратнаяке:

      val attributes = window.attributes
attributes.screenBrightness = 1f
window.attributes = attributes

Если вы хотите, чтобы это было только в вашем приложении, тогда каждое действие, которое должно быть полной яркости, просто должно реализовать приведенный ниже код.

Всякий раз, когда вы переключаетесь на обычные действия или переключаетесь обратно на другие приложения, яркость снова будет определяться пользователем. Однако действие, для которого яркость была установлена ​​программно, запомнит ваши настройки.

Если вы можете реализовать код вonCreate()затем используйте следующее:

      window.attributes.apply {
    screenBrightness = LayoutParams.BRIGHTNESS_OVERRIDE_FULL
}

Если вы хотите обновить яркость во время выполнения действия, вам необходимо дополнительно уведомить систему, чтобы изменения вступили в силу:

      window.apply {
    attributes.apply {
        screenBrightness = LayoutParams.BRIGHTNESS_OVERRIDE_FULL
    }
    addFlags(LayoutParams.SCREEN_BRIGHTNESS_CHANGED)
}
Другие вопросы по тегам