<kbd id="afajh"><form id="afajh"></form></kbd>
<strong id="afajh"><dl id="afajh"></dl></strong>
    <del id="afajh"><form id="afajh"></form></del>
        1. <th id="afajh"><progress id="afajh"></progress></th>
          <b id="afajh"><abbr id="afajh"></abbr></b>
          <th id="afajh"><progress id="afajh"></progress></th>

          Android 修改屏幕亮度方案

          共 10790字,需瀏覽 22分鐘

           ·

          2020-11-27 14:51

          和你一起終身學(xué)習(xí),這里是程序員Android

          經(jīng)典好文推薦,通過閱讀本文,您將收獲以下知識點:

          一、獲取系統(tǒng)Settings 中的亮度
          二、修改APP界面屏幕亮度,不會影響其他APP
          三、修改系統(tǒng)Settings 中屏幕亮度,影響所有APP
          四、完整代碼實現(xiàn)

          一、獲取系統(tǒng)Settings 中的亮度

          系統(tǒng)屏幕亮度值在(0~255)之間,獲取方法很簡單,只需要調(diào)用以下方法即可。

          /**

          * 1.獲取系統(tǒng)默認(rèn)屏幕亮度值 屏幕亮度值范圍(0-255)
          * **/

          private int getScreenBrightness(Context context) {
          ContentResolver contentResolver = context.getContentResolver();
          int defVal = 125;
          return Settings.System.getInt(contentResolver,
          Settings.System.SCREEN_BRIGHTNESS, defVal);
          }

          修改屏幕亮度包含兩種:
          1.修改APP界面屏幕亮度,不會影響其他APP
          2.修改系統(tǒng) Settings 中屏幕亮度,影響所有APP.

          二,修改APP界面屏幕亮度,不會影響其他APP

          修改自身 APP 亮度很簡單,只需要在Activity OnCreate方法調(diào)用如下代碼即可。

          /**
          * 2.設(shè)置 APP界面屏幕亮度值方法
          * **/

          * 2.設(shè)置 APP界面屏幕亮度值方法
          * **/

          private void setAppScreenBrightness(int birghtessValue) {
          Window window = getWindow();
          WindowManager.LayoutParams lp = window.getAttributes();
          lp.screenBrightness = birghtessValue / 255.0f;
          window.setAttributes(lp);
          }

          三、修改系統(tǒng)Settings 中屏幕亮度,影響所有APP

          修改系統(tǒng) Settings 中的屏幕亮度,由于會影響到所有APP,需要申請修改Settings的權(quán)限 ,同時需要取消光感自動調(diào)節(jié)屏幕亮度的功能,設(shè)置為手動調(diào)節(jié)模式,否則光感傳感器會隨著光照強度的變化修改系統(tǒng)屏幕亮度,并且非系統(tǒng)簽名的APP,需要用戶手動授權(quán)后才可以修改背光亮度。

          關(guān)閉光感,設(shè)置手動調(diào)節(jié)背光模式實現(xiàn)方法如下:

          /**
          * 3.關(guān)閉光感,設(shè)置手動調(diào)節(jié)背光模式
          *
          * SCREEN_BRIGHTNESS_MODE_AUTOMATIC 自動調(diào)節(jié)屏幕亮度模式值為1
          *
          * SCREEN_BRIGHTNESS_MODE_MANUAL 手動調(diào)節(jié)屏幕亮度模式值為0
          * **/

          * 3.關(guān)閉光感,設(shè)置手動調(diào)節(jié)背光模式
          *
          * SCREEN_BRIGHTNESS_MODE_AUTOMATIC 自動調(diào)節(jié)屏幕亮度模式值為1
          *
          * SCREEN_BRIGHTNESS_MODE_MANUAL 手動調(diào)節(jié)屏幕亮度模式值為0
          * **/

          public void setScreenManualMode(Context context) {
          ContentResolver contentResolver = context.getContentResolver();
          try {
          int mode = Settings.System.getInt(contentResolver,
          Settings.System.SCREEN_BRIGHTNESS_MODE);
          if (mode == Settings.System.SCREEN_BRIGHTNESS_MODE_AUTOMATIC) {
          Settings.System.putInt(contentResolver,
          Settings.System.SCREEN_BRIGHTNESS_MODE,
          Settings.System.SCREEN_BRIGHTNESS_MODE_MANUAL);
          }
          } catch (Settings.SettingNotFoundException e) {
          e.printStackTrace();
          }
          }
          非系統(tǒng)簽名應(yīng)用,引導(dǎo)用戶手動授權(quán)修改Settings 權(quán)限

          非系統(tǒng)簽名應(yīng)用,無法直接修改Settings,需要引導(dǎo)用戶手動授權(quán)。

          引導(dǎo)用戶手動授權(quán)

              /**
          * 4.非系統(tǒng)簽名應(yīng)用,引導(dǎo)用戶手動授權(quán)修改Settings 權(quán)限
          * **/

          private static final int REQUEST_CODE_WRITE_SETTINGS = 1000;

          private void allowModifySettings() {
          // Settings.System.canWrite(MainActivity.this)
          // 檢測是否擁有寫入系統(tǒng) Settings 的權(quán)限
          if (!Settings.System.canWrite(MainActivity.this)) {
          AlertDialog.Builder builder = new AlertDialog.Builder(this,
          android.R.style.Theme_Material_Light_Dialog_Alert);
          builder.setTitle("請開啟修改屏幕亮度權(quán)限");
          builder.setMessage("請點擊允許開啟");
          // 拒絕, 無法修改
          builder.setNegativeButton("拒絕",
          new DialogInterface.OnClickListener() {
          @Override
          public void onClick(DialogInterface dialog, int which) {
          Toast.makeText(MainActivity.this,
          "您已拒絕修系統(tǒng)Setting的屏幕亮度權(quán)限", Toast.LENGTH_SHORT)
          .show();
          }
          });
          builder.setPositiveButton("去開啟",
          new DialogInterface.OnClickListener() {
          @Override
          public void onClick(DialogInterface dialog, int which) {
          // 打開允許修改Setting 權(quán)限的界面
          Intent intent = new Intent(
          Settings.ACTION_MANAGE_WRITE_SETTINGS, Uri
          .parse("package:"
          + getPackageName()));
          startActivityForResult(intent,
          REQUEST_CODE_WRITE_SETTINGS);
          }
          });
          builder.setCancelable(false);
          builder.show();
          }
          }

          @Override
          protected void onActivityResult(int requestCode, int resultCode, Intent data) {
          // TODO Auto-generated method stub
          super.onActivityResult(requestCode, resultCode, data);
          if (requestCode == REQUEST_CODE_WRITE_SETTINGS) {
          if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
          // Settings.System.canWrite方法檢測授權(quán)結(jié)果
          if (Settings.System.canWrite(getApplicationContext())) {
          // 5.調(diào)用修改Settings屏幕亮度的方法 屏幕亮度值 200
          ModifySettingsScreenBrightness(MainActivity.this, 200);
          Toast.makeText(this, "系統(tǒng)屏幕亮度值" + getScreenBrightness(this),
          Toast.LENGTH_SHORT).show();
          } else {
          Toast.makeText(MainActivity.this, "您已拒絕修系統(tǒng)Setting的屏幕亮度權(quán)限",
          Toast.LENGTH_SHORT).show();
          }
          }
          }
          }

          修改Setting 中屏幕亮度值 實現(xiàn)

          擁有系統(tǒng)簽名的應(yīng)用可以直接調(diào)用此方法修改系統(tǒng)屏幕亮度,非系統(tǒng)簽名應(yīng)用,只有用戶授權(quán)后才可以修改。

          /**

          * 5.修改Setting 中屏幕亮度值
          *
          * 修改Setting的值需要動態(tài)申請權(quán)限
          * android:name="android.permission.WRITE_SETTINGS"/>
          * **/

          private void ModifySettingsScreenBrightness(Context context,
          int birghtessValue) {
          // 首先需要設(shè)置為手動調(diào)節(jié)屏幕亮度模式
          setScreenManualMode(context);

          ContentResolver contentResolver = context.getContentResolver();
          Settings.System.putInt(contentResolver,
          Settings.System.SCREEN_BRIGHTNESS, birghtessValue);
          }

          四、完整代碼實現(xiàn)

          完整代碼實現(xiàn)如下:

          public class MainActivity extends Activity {

          @Override
          protected void onCreate(Bundle savedInstanceState) {
          super.onCreate(savedInstanceState);
          //獲取屏幕亮度
          getScreenBrightness(this);
          Toast.makeText(this, "系統(tǒng)屏幕亮度值" + getScreenBrightness(this),
          Toast.LENGTH_SHORT).show();
          // 設(shè)置APP 屏幕亮度后,系統(tǒng)Setting亮度將對此app 不生效
          setAppScreenBrightness(100);
          allowModifySettings();
          setContentView(R.layout.activity_main);

          }

          /**
          * 1.獲取系統(tǒng)默認(rèn)屏幕亮度值 屏幕亮度值范圍(0-255)
          * **/

          private int getScreenBrightness(Context context) {
          ContentResolver contentResolver = context.getContentResolver();
          int defVal = 125;
          return Settings.System.getInt(contentResolver,
          Settings.System.SCREEN_BRIGHTNESS, defVal);
          }

          /**
          * 2.設(shè)置 APP界面屏幕亮度值方法
          * **/

          private void setAppScreenBrightness(int birghtessValue) {
          Window window = getWindow();
          WindowManager.LayoutParams lp = window.getAttributes();
          lp.screenBrightness = birghtessValue / 255.0f;
          window.setAttributes(lp);
          }

          /**
          * 3.關(guān)閉光感,設(shè)置手動調(diào)節(jié)背光模式
          *
          * SCREEN_BRIGHTNESS_MODE_AUTOMATIC 自動調(diào)節(jié)屏幕亮度模式值為1
          *
          * SCREEN_BRIGHTNESS_MODE_MANUAL 手動調(diào)節(jié)屏幕亮度模式值為0
          * **/

          public void setScreenManualMode(Context context) {
          ContentResolver contentResolver = context.getContentResolver();
          try {
          int mode = Settings.System.getInt(contentResolver,
          Settings.System.SCREEN_BRIGHTNESS_MODE);
          if (mode == Settings.System.SCREEN_BRIGHTNESS_MODE_AUTOMATIC) {
          Settings.System.putInt(contentResolver,
          Settings.System.SCREEN_BRIGHTNESS_MODE,
          Settings.System.SCREEN_BRIGHTNESS_MODE_MANUAL);
          }
          } catch (Settings.SettingNotFoundException e) {
          e.printStackTrace();
          }
          }

          /**
          * 4.非系統(tǒng)簽名應(yīng)用,引導(dǎo)用戶手動授權(quán)修改Settings 權(quán)限
          * **/

          private static final int REQUEST_CODE_WRITE_SETTINGS = 1000;

          private void allowModifySettings() {
          // Settings.System.canWrite(MainActivity.this)
          // 檢測是否擁有寫入系統(tǒng) Settings 的權(quán)限
          if (!Settings.System.canWrite(MainActivity.this)) {
          AlertDialog.Builder builder = new AlertDialog.Builder(this,
          android.R.style.Theme_Material_Light_Dialog_Alert);
          builder.setTitle("請開啟修改屏幕亮度權(quán)限");
          builder.setMessage("請點擊允許開啟");
          // 拒絕, 無法修改
          builder.setNegativeButton("拒絕",
          new DialogInterface.OnClickListener() {
          @Override
          public void onClick(DialogInterface dialog, int which) {
          Toast.makeText(MainActivity.this,
          "您已拒絕修系統(tǒng)Setting的屏幕亮度權(quán)限", Toast.LENGTH_SHORT)
          .show();
          }
          });
          builder.setPositiveButton("去開啟",
          new DialogInterface.OnClickListener() {
          @Override
          public void onClick(DialogInterface dialog, int which) {
          // 打開允許修改Setting 權(quán)限的界面
          Intent intent = new Intent(
          Settings.ACTION_MANAGE_WRITE_SETTINGS, Uri
          .parse("package:"
          + getPackageName()));
          startActivityForResult(intent,
          REQUEST_CODE_WRITE_SETTINGS);
          }
          });
          builder.setCancelable(false);
          builder.show();
          }
          }

          @Override
          protected void onActivityResult(int requestCode, int resultCode, Intent data) {
          // TODO Auto-generated method stub
          super.onActivityResult(requestCode, resultCode, data);
          if (requestCode == REQUEST_CODE_WRITE_SETTINGS) {
          if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
          // Settings.System.canWrite方法檢測授權(quán)結(jié)果
          if (Settings.System.canWrite(getApplicationContext())) {
          // 5.調(diào)用修改Settings屏幕亮度的方法 屏幕亮度值 200
          ModifySettingsScreenBrightness(MainActivity.this, 200);
          Toast.makeText(this, "系統(tǒng)屏幕亮度值" + getScreenBrightness(this),
          Toast.LENGTH_SHORT).show();
          } else {
          Toast.makeText(MainActivity.this, "您已拒絕修系統(tǒng)Setting的屏幕亮度權(quán)限",
          Toast.LENGTH_SHORT).show();
          }
          }
          }
          }

          /**
          * 5.修改Setting 中屏幕亮度值
          *
          * 修改Setting的值需要動態(tài)申請權(quán)限
          * android:name="android.permission.WRITE_SETTINGS"/>
          * **/

          private void ModifySettingsScreenBrightness(Context context,
          int birghtessValue) {
          // 首先需要設(shè)置為手動調(diào)節(jié)屏幕亮度模式
          setScreenManualMode(context);

          ContentResolver contentResolver = context.getContentResolver();
          Settings.System.putInt(contentResolver,
          Settings.System.SCREEN_BRIGHTNESS, birghtessValue);
          }
          }

          至此,本篇已結(jié)束。轉(zhuǎn)載網(wǎng)絡(luò)的文章,小編覺得很優(yōu)秀,歡迎點擊閱讀原文,支持原創(chuàng)作者,如有侵權(quán),懇請聯(lián)系小編刪除。同時感謝您的閱讀,期待您的關(guān)注。

          點個在看,方便您使用時快速查找!

          瀏覽 79
          點贊
          評論
          收藏
          分享

          手機掃一掃分享

          分享
          舉報
          評論
          圖片
          表情
          推薦
          點贊
          評論
          收藏
          分享

          手機掃一掃分享

          分享
          舉報
          <kbd id="afajh"><form id="afajh"></form></kbd>
          <strong id="afajh"><dl id="afajh"></dl></strong>
            <del id="afajh"><form id="afajh"></form></del>
                1. <th id="afajh"><progress id="afajh"></progress></th>
                  <b id="afajh"><abbr id="afajh"></abbr></b>
                  <th id="afajh"><progress id="afajh"></progress></th>
                  日韩 国产 在线 | 久操网站 | 欲色AV| 日韩和亚洲的日本品牌区分米奇777788 | 性交小视频 |