在使用系统的IPowerManager设置系统屏幕亮度,代码如下(使用这个代码需要导入外部jar包,Y:\w990settings\alps\out\target\common\obj\JAVA_LIBRARIES\framework_intermediates\classes.jar):

private void setBrightness(int brightness) {
        try {
            IPowerManager power = IPowerManager.Stub.asInterface(
                    ServiceManager.getService("power"));
            //Only set backlight value when screen is on
            if (power != null && power.isScreenOn()) {
                power.setBacklightBrightness(brightness);
            }
        } catch (RemoteException doe) {
            
        }
    }

该代码在settings模块,显然是android:sharedUserId="android.uid.system"(Androidmanifest.xml里面)。是因为这个原因所以能够访问。需要权限android.permission.DEVICE_POWER才能访问,并且该权限只限于使用系统固件签名的应用才能够授予,基本上只有一些系统应用才能够有该权限。所以权限问题导致了不能够授予给三方应用该权限。

但是360省电确能够调整屏幕亮度。看来还有其他方法。发现如下方法可行:

public void onProgressChanged(SeekBar seekBar, int progress,boolean fromUser) {// TODO Auto-generated method stubtv_brightnessPercent.setText((int)((progress/255.0) * 100) + "%");int tmpInt = sb_modBrightness.getProgress();Settings.System.putInt(XEnergyActivity.this.getContentResolver(), Settings.System.SCREEN_BRIGHTNESS, tmpInt);tmpInt = Settings.System.getInt(XEnergyActivity.this.getContentResolver(), Settings.System.SCREEN_BRIGHTNESS, -1);WindowManager.LayoutParams wl = getWindow().getAttributes();float tmpFloat = (float) (tmpInt/255.0);if(tmpFloat > 0 && tmpFloat <= 1){wl.screenBrightness = tmpFloat;}getWindow().setAttributes(wl);
}

先将亮度信息tmpInt(最大255)存入Settings.System.SCREEN_BRIGHTNESS中:

Settings.System.putInt(XEnergyActivity.this.getContentResolver(), Settings.System.SCREEN_BRIGHTNESS, tmpInt);

再调整当前窗口的亮度信息:

WindowManager.LayoutParams wl = getWindow().getAttributes();
float tmpFloat = (float) (tmpInt/255.0);
if(tmpFloat > 0 && tmpFloat <= 1)
{wl.screenBrightness = tmpFloat;
}
getWindow().setAttributes(wl);

注意这里面的w1为float类型,最大值为1.0f。所以需要进行转换。如果没有下面这个调整当前活动屏幕亮度,需要开启关闭屏幕一次,上面的那个putInt函数才会起作用。

如果只需要调整程序内部屏幕亮度(比如一些阅读器)只需要后面的WindowManager设置即可。但是,当退出程序的时候,屏幕会恢复到系统本身设置的亮度。

如何调整系统屏幕亮度和程序内部屏幕亮度相关推荐

  1. win10关掉扩展屏幕后,打开原来在扩展屏幕上的程序后主屏幕找不到怎么办?IIS扩展屏后断开扩展屏主屏看不到

      一般可以这样操作,按Alt+空格,然后按M,然后用上下左右键把窗口移动到能看到的地方,再按回车.有些第三方的软件可能不能用,大部分都可以这样做.

  2. win10调节屏幕亮度_自动调节电脑屏幕亮度软件,保护你的眼睛

    本文共514个字,预计用时2分钟 小伙伴们,今天给大家分享一个小软件,名字叫做 EyeCareApp,中文名:护眼软件 EyeCareApp是一款能够调节屏幕亮度的软件,它可以调整屏幕亮度,滤除蓝光, ...

  3. python使用循环结构编程打印出如下图案_使用双层for循环编写程序,在屏幕上打印输出如下图案...

    展开全部 回答即可62616964757a686964616fe59b9ee7ad9431333361303561得2分经验值第三章 循环程序在编程中经常遇到需要多次规律相同的重复处理,这就是循环问题 ...

  4. python编程在哪里写程序-第一个Python程序——在屏幕上输出文本

    本节我将给大家介绍最简单.最常用的 Python 程序--在屏幕上输出一段文本,包括字符串和数字. Python 使用 print 函数在屏幕上输出一段文本,输出结束后会自动换行. 在屏幕上输出字符串 ...

  5. python3屏幕抓取程序_python之屏幕抓取

    Tidy 和 HTML 解析 Beautiful Soup 屏幕抓取:是通过程序下载网页并从中提取信息的过程. 简单来见:下载数据并对其进行分析 思路:可使用urllib来获取网页的HTML代码,再使 ...

  6. android+系统屏幕亮度,android 设置系统屏幕亮度

    android 设置系统屏幕亮度 权限 /** * 获得当前屏幕亮度的模式 * SCREEN_BRIGHTNESS_MODE_AUTOMATIC=1 为自动调节屏幕亮度 * SCREEN_BRIGHT ...

  7. win8.1 计算机放在桌面,Win8.1怎么把开始屏幕中的程序放到桌面?

    Win8.1怎么把开始屏幕中的程序放到桌面?在Win8.1系统中,我们都要在"Metro"界面来启动程序,很多伙伴觉得很麻烦,于是询问小编能不能将Win8.1开始屏幕中的程序放到桌 ...

  8. android 系统亮度,android 设置系统屏幕亮度

    android 设置系统屏幕亮度 权限 /** * 获得当前屏幕亮度的模式 * SCREEN_BRIGHTNESS_MODE_AUTOMATIC=1 为自动调节屏幕亮度 * SCREEN_BRIGHT ...

  9. 区分大小屏幕_第一个Python程序——在屏幕上输出文本

    本节我将给大家介绍最简单.最常用的 Python 程序--在屏幕上输出一段文本,包括字符串和数字.Python 使用 print 函数在屏幕上输出一段文本,输出结束后会自动换行. 在屏幕上输出字符串 ...

最新文章

  1. 漂亮的PCB设计图案
  2. Citrix各系列产品安装光盘资源下载链接
  3. Django环境的搭建以及最简示例
  4. Tkinter的entry组件
  5. 不使用任何路由协议使3台路由器通信
  6. android unix时间,android: 日期转Unix时间戳,Unix时间戳转日期,带时区
  7. Yearn已部署新YFI策略Brownie Mix
  8. linux平台 oracle 数据库 安装文档
  9. matlab2020面板介绍
  10. 经典语录(确实经典)
  11. c语言char和int8,关于数组:C中uint8和char之间的转换
  12. 数字电路反相器符号_逻辑非门真值表教程和反相器振荡器等效
  13. 雨林木风诚聘Linux研发工程师
  14. Dynamips路由模拟器使用心得
  15. 当 CPU 摸鱼时,它到底在干什么?
  16. android 高德地图方向指向不变问题分析
  17. 真正的 AI 内行盛会!
  18. 神经网络四:Softmax以及与Sigmoid的关系
  19. 【图像分类】2022-MPViT CVPR
  20. 原生js获取元素的子元素

热门文章

  1. gerrit配置教程
  2. Gerrit、gitlab与jenkins集成讲解
  3. 16、iOS屏幕等比例适配
  4. 【Redis的应用-关注和粉丝】
  5. transpose和reshape函数实现
  6. 影视宣传片短片广告片策划制作
  7. 小程序组件onload_微信小程序自定义组件踩坑教程
  8. 在IDEA中使用preparestatement,使用setdate出错的问题
  9. 这才是我想要是游览器——打造最强Microsoft edge+ChatGPT
  10. 用于新冠、甲型和乙型流感病毒检测的离心式微流控芯片