问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

如何调节闪光灯亮度

发布网友 发布时间:2022-04-22 07:59

我来回答

3个回答

热心网友 时间:2022-06-18 05:21

Android系统亮度调节全局性最高,常见于系统设置中的亮度设置项。Android中提供了获取和设置系统亮度值(“手动模式下的亮度值”)的接口,具体如下:
  1、 获取系统亮度
  2 Settings.System.getInt(getContentResolver(), Settings.System.SCREEN_BRIGHTNESS);
  1 // 设置系统亮度
  2 Settings.System.putInt(getContentResolver(), Settings.System.SCREEN_BRIGHTNESS,systemBrightness);
  其中,需要注意的是,返回的亮度值是处于0-255之间的整型数值。

  Android 2.1以后的系统中,系统亮度调节中新增了“自动亮度”选项。“自动亮度”是依据外界光源来自动的改变系统亮度,目前大部分手机中对“自动亮度”还可以进行小幅度的调节其值。与自动亮度相对应的是“手动亮度”,当处于“手动亮度”下,设置拖动亮度进度条会大幅度的改变Android系统亮度。“手动亮度”和“自动亮度”分别称之为Android系统的“亮度模式”。
  与之相对应的,Android系统中也提供了获取和设置“亮度模式”的接口。
  1 // 获取系统亮度模式
  2 Settings.System.getInt(getContentResolver(), Settings.System.SCREEN_BRIGHTNESS_MODE);
  1 // 设置系统亮度模式
  2 Settings.System.putInt(getContentResolver(), Settings.System.SCREEN_BRIGHTNESS_MODE, systemMode);
  可是遗憾的是,Android中并未提供处于“自动亮度”模式下的亮度值接口。上面所说的获取系统亮度值接口实际上都是指“手动亮度”模式下的亮度值。

  一般而言,通过手动亮度值以及设置系统亮度模式接口,可以满足常规的大部分针对Android系统亮度设置编码需求,以完成系统亮度调节。
  2.Android App亮度调节
  与系统亮度不同的是,Android中并未直接提供针对于App层面的亮度调节方式。因此,对于需要进行App的亮度调节,可以通过系统亮度调节或当前屏幕的亮度调节方式间接来实现。
  3.Android当前屏幕(Window)亮度调节
  Android针对当前屏幕(Window)提供了设置亮度的接口,常见写法如下:
  1 Window window = activity.getWindow();
  2 WindowManager.LayoutParams lp = window.getAttributes();
  3 lp.screenBrightness = brightness;
  4 window.setAttributes(lp);
  其中,需要注意的是此处的brightness是一个0.0-1.0之间的一个float类型数值。
  默认情况下,当我们直接修改了系统亮度值后,当前Window中是可以即时反应出来亮度效果的,这是因为默认情况下,WindowManager.LayoutParams的screenBrightness的默认值为WindowManager.LayoutParams.BRIGHTNESS_OVERRIDE_NONE。
  即表示Window没有自己的亮度参数,将依随系统亮度效果的变化而变化。这也就是我们最常见的:当调整系统亮度后,所有Window都即时反应出系统亮度设置效果。
  当时,实际项目中我们还会遇到此类需求:系统设置亮度时只针对当前Window或App内生效,而不影响到系统本身的亮度设置。
  假设当前Window内有一个SeekBar,UI与系统亮度调节UI基本类似,用户可以滑动此SeekBar,使得当前Window亮度即时发生变化,且不影响到系统亮度效果。
  此时需要启用WindowManager.LayoutParams的screenBrightness参数,使之具有自动的特定亮度值,设置此值后在当前Window范围内,其将覆盖掉系统亮度设置。
  因此,有必要将用户选择的亮度值转换为相应的Window亮度值(为与系统亮度值相一致,假设SeekBar的最大值为255)。
  复制代码
  1 // 根据亮度值修改当前window亮度
  2 public void changeAppBrightness(Context context, int brightness) {
  3 Window window = ((Activity) context).getWindow();
  4 WindowManager.LayoutParams lp = window.getAttributes();
  5 if (brightness == -1) {
  6 lp.screenBrightness = WindowManager.LayoutParams.BRIGHTNESS_OVERRIDE_NONE;
  7 } else {
  8 lp.screenBrightness = (brightness <= 0 ? 1 : brightness) / 255f;
  9 }
  10 window.setAttributes(lp);
  11 }
  复制代码
  其中,brightness形参为用户选择的亮度值。
  那么,上述代码中为什么有一个"brightness == -1"的判断,在此主要是考虑到App设置项中可能出现的“跟随系统亮度”或“恢复系统默认亮度”此类设置,当用户进行此类操作时,直接将screenBrightness参数还原成默认参数值即可。因为由前文描述“自动亮度”模式下系统亮度值是不能直接得到的,那么当系统处于“自动亮度”模式下,此时brightness参数值将无法准确确定,因此,将screenBrightness参数还原成默认参数值成为一个行之有效的方法。
  4.Android App亮度调节可行方案分析
  目前网上有不少博文中提到App亮度调节时,提出的方案是在App设置项中,首先记录下设置之前的系统亮度值和亮度模式,用户在App设置项进行亮度调节时,直接修改系统亮度值,当用户退出此App,或App至于后台(如按下Home按键等),再将系统亮度还原。初看起来貌似一个可行的方案。但是主要存在如下几个问题:
  1.如何获取到设置之前的系统亮度值和亮度模式(因为之后在此App外部要恢复系统亮度值到此初始值),当用户每次进入到设置页时获取?严格意义上来说,是没法准确记录的。因为Android的用户操作不可预知性,如进入到设置页,拖动SeekBar设置了一个亮度值,此时直接修改了系统的亮度值,如果此时用户在未将应用至于后台或未将应用退出的情况下直接在App外部修改了系统亮度设置,如小米中可以通过下拉标题栏,直接就可以设置系统亮度。因此,App亮度设置之前的系统亮度初始值获取存在困难。
  2.如何判断用户来到了App外部,因为此时需要恢复系统亮度设置到初始系统亮度。如用户可以按下Home按键,长按Home按键直接切换App,直接Back按键等一步步退出此App,下拉标题栏直接点击其他App通知信息进入到其他App,手机自动锁屏后解锁时用户直接进入其他应用等等,此类操作场景也具有不可预知性,因此,判断用户来到了App外部以恢复系统亮度到初始值的时机上也存在一定困难。
  由此,App亮度调节方案推荐通过设置当前屏幕(Window)方式进行。
  大致思路如下:用户在设置项中进行亮度调节时,调用changeAppBrightness()方法,将改变当前屏幕(Window)的亮度,此时对系统亮度无任何影响,接下来存在的问题终于要就集中于当用户来到本App其他Activity中,如果使得刚刚设置的亮度值得以即时反应出来。
  当用户进行亮度调节后,将当前亮度设置值保存起来(如保存到SharedPreferences中),在基类Activity中的onResume方法中,可以取出SharedPreferences中的用户所设置的App亮度值,然后changeAppBrightness()方法以实现每个当前屏幕的亮度调节。
  总体说来,通过设置当前屏幕(Window)的方式来设置App亮度更加简单有效。

热心网友 时间:2022-06-18 05:22

目前还不行,api没提供,htc的机器多数有这样的app,可能是他们用的非开放方法。现在市场上的android的手电筒都是控制的LED实现的。

热心网友 时间:2022-06-18 05:22

楼主问的应该是像机的闪光灯,版主给的屏幕的亮度。
声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
汽车上保险都选哪几种? 刚怀孕能不能吃酸辣粉 西红柿冬天的储存方法 城市轨道交通和汽修哪个好就业? 女职工退休年龄是多大的 我国法定女性退休年龄是多少岁 坐月子能吃枸杞红枣吗? 坐小月子能不能吃枸杞 2017年最让你期待的动漫是哪部?为什么? 骨汤面的做法骨汤面怎么做 她来了请闭眼怎样离线下载 如何调节闪光灯的亮度? 她来了请闭眼12月31号为什么不播 她来了请闭眼第几集薄靳言梦到了汤米在监狱里跟他... 相机闪光灯用了好几年不太亮怎么办? 她来了请闭眼电视剧昨天24时不是提醒更新完了吗 霍建华与马思纯演的影视叫什么名字 照相机闪光灯亮度下降啥原? 有木有跟她来了,请闭眼,这种侦探悬疑言情小说差... 电动车刚换的闪光灯不太亮,亮度不个,是什么问题 她来了请闭眼电视剧男女主角都是谁 电视剧(他来了,请闭眼)1-24全集完整版在线? 她来了请闭眼中有一句台词是情不知所起,一往情深的... 项目可行性分析报告 投资一个矿山,这个项目的投资收益,该从哪几个方... 矿山开发可行性研究与矿床技术经济评价有何不同 项目的可行性分析是什么意思。 矿山建设项目需要完成环评、安评后才能申请采矿许... 项目的可行性分析包括哪些 怎样写项目可行性分析报告? 章龄之她来了请闭眼同款什么牌子的啊? 马思纯回应自己胖了,现在的马思纯好看吗? 酒店电视会连接wifi吗 12月3 日她来了,请闭眼为什么没更新 来几本小说吧!要好看的精彩的哟 昨晚东方卫视放她来了请闭眼了23集,24集了没有 暴风可以看她来了请闭眼吗 语言优美,不虐,很宠,但是少肉的小说 酒店网络电视如何看正常电视 你最喜欢看的刑侦的小说有哪些? 酒店电视机买什么品牌的好? 大型宾馆电视一般都用什么看呢?是数字电视还是有... 看酒店里面电视的付费频道需要另外交钱吗? 以酒店为背景的电视剧有哪些 宾馆电视蓝屏怎么调出频道 邯郸都市整形美容医院的医院简介 美骨秘颜河北邯郸有做美容院的吗 邯郸都市整形美容医院的专家介绍 邯郸都市整形美容医院的介绍 邯郸哪儿整容比较好,安全,价格也合理,帮帮忙了