
在安卓软件中 ,可以以 Activity为单位来调节屏幕的亮度。妳可以将自己的程序中第一个 Activity的亮度调节得特别亮,而在另一个Activity中把屏幕亮度调节得特别暗,当用户在两个Activity之间切换时,屏幕亮度也会对应地切换。
具体地 ,可设置一个WindowManager.LayoutParams对象的screenBrightness属性的值,再将这个LayoutParams对象设置为当前窗口的布局属性,这样来改变当前Activity的屏幕亮度。 screenBrightness的取值范围是0~1的浮点数。可使用 WindowManager.LayoutParameters.BRIGHTNESS_OVERRIDE_OFF这个值来表示要将当前屏幕亮度调节到能够达到的最低亮度。
这里搞点示例代码 :
import android.app.Activity;
import android.view.WindowManager;
……
WindowManager.LayoutParams params=getWindow().getAttributes(); //获取窗口属性。
params. screenBrightness =0.01f; //设置亮度为0. 01,已经狠接近最低亮度了。
// params.screenBrightness=WindowManager.LayoutParams.BRIGHTNESS_OVERRIDE_OFF; //Debug.
getWindow().setAttributes(params); //重新设置属性。
需要注意一点 ,不同型号手机所支持的最低亮度是不同的 。可能妳按照同样的代码将屏幕亮度调整到最低 ,在某些手机上效果狠好,几乎看不到屏幕有光,而在另外一些手机上却还是狠亮。在怀疑自己代码出问题之前 ,可以先在手机的设置界面里手动把亮度调到最低,看看是不是该手机所支持的最低亮度本身就狠高。
例如,下图是同一张照片在华为 Y300、IPHONE 4S (友情客串,感谢贵州妹妹) 、 OPPO X909 、HTC T328W 和夏新N850上以最低亮度显示的效果比较 ,这张合影照拍摄时是以中间的OPPO X909为基准来自动对焦及自动调节亮度的 。在一个黑暗房间里拍的,而且OPPO X909本身的最低亮度确实非常非常的低,所以这张照片的自动对焦实际上是不成功的,导致画面是虚的。
OPPO X909跟爱疯4S差不多,在调节到最低亮度的情况下 ,屏幕上不仔细看几乎看不出有亮光 ,都已经跟关掉背光的旧式诺基亚手机差不多了 ,但是画面细节仍然清晰 ,特别适合夜猫子晚上在床上一边蠕动一边看小说啊。 看来这两个型号确实在屏幕技术上下了狠功夫 。
日后买手机 ,也可以拿最低亮度做个参考因素,把样机的屏幕亮度拉到最小 ,看看能暗到什么程度。也能在一定程度上反映出厂商对这款手机投入的研发力量水平。
还是回到软件开发技术上来说事 。假如妳手上的手机其最低亮度实在太高,而妳又实在想要达到那种几乎看不到亮光的程度(例如开发某种偷拍软件),怎么办呢?办法还是有的,在自己的程序里,使用代码来显示出一个颜色特别深的置顶全屏元素就行了,据说有个叫安卓护目镜的软件就是用的这个原理。本座的某个项目里也是采用了这个原理的 。
未知美人,致谢
HxLauncher: Launch Android applications by voice commands