天天看点

我的Android进阶之旅------>自己写个Activity来调节Android系统背光亮度Brightness

我的Android进阶之旅------>自己写个Activity来调节Android系统背光亮度Brightness

      今天终于算初步写好了一个调节系统背光亮度Brightness的代码,本来不看Android源代码以为可以直接调用某个Action来启动系统的那个调节Brightness的对话框,但是看了代码后发现系统调节Brightness的自定义组件BrightnessPreference继承了SeekBarDialogPreference,但是最终父类还是Preference,因此不能够单独启动,必须得将这个自定义的BrightnessPreference用某个Activity才能加载过来,毕竟最终还是一个组件。因此,将系统的BrightnessPreference改写成Activity的形式,然后将Activity的主题设置为对话框的主题即可。

     下图是系统自带的对话框,我的Activity就是仿造这个界面做的。

我的Android进阶之旅------>自己写个Activity来调节Android系统背光亮度Brightness

      下面是我改写完后的代码,可以和系统设置的背光设置进行同步,即数据同步,无论是使用自己的Activity还是系统自带的调节背光的亮度,都是一样的效果。代码在Eclipse中运行可能会报错,但是别怕,使用Android编译能通过,然后push到Android设备中去运行没有错误。

 代码如下:BrightnessDialogActivity.java

相应的布局文件如下:brightness_dialog_activity.xml

注册Activity的时候使用下面的主题

但是有个bug,即调用系统的应用调节背光的时候,Seekbar的值和复选框是否被勾中在我的自定义Activity中的Seekbar的值和复选框是否被勾中同步,但是反过来就不行了。

再次读取系统的BrightnessPreference发现是因为没有去进行更新操作。因此得修改Android的源代码,重新编译后才能达到两边数据随便那边修改后,两边的数据都同步。

修改如下所示,修改前BrightnessPreference.showDialog(Bundle state)

修改后BrightnessPreference.showDialog(Bundle state),即打开对话框的时候重新去读取数据库里面的Brightness的值和复选框是否被选中的值。

====================================================================================

  作者:欧阳鹏  欢迎转载,与人分享是进步的源泉!

===================================================================================

最后附上系统调节Brightness的代码