Android开发调节屏幕亮度
在播放器,我们经常看到这样的设计,即,在用户的特定部分将能够滑动屏幕向上或向下调整屏幕的亮度,上下滑动的某一部分将能够调整播放音量。并以滑动的进程可以进行调整,以玩。
如今,我不得不说一下亮度调节。
其实主要是通过设置View该特性实现。
public void onLightChange(float delta, int distance, Window window) {
WindowManager.LayoutParams params = window.getAttributes();
mCurrentDeltaBrintness = mCurrentDeltaBrintness + delta;
if (params.screenBrightness == WindowManager.LayoutParams.BRIGHTNESS_OVERRIDE_NONE) {
params.screenBrightness = getScreenBrightness(getContext());
}
if (Math.abs(mCurrentDeltaBrintness) >= mScrolledPixPerBringhtness) {
float deltaBrightness = mCurrentDeltaBrintness / (mScrolledPixPerBringhtness * MAX_BRINTNESS);
params.screenBrightness = params.screenBrightness + deltaBrightness;
<pre name="code" class="java"> private void performLightChange(float brightness) {
int resId = R.drawable.light_0;
if (brightness <= 0.01f) {
resId = R.drawable.light_0;
} else if (brightness <= 0.25f) {
resId = R.drawable.light_25;
} else if (brightness <= 0.5f) {
resId = R.drawable.light_50;
} else if (brightness < 1.0f) {
resId = R.drawable.light_75;
} else {
resId = R.drawable.light_100;
}
updateViews(resId, (int) (brightness * 100));
}
if (params.screenBrightness <= 0.01f) { params.screenBrightness = 0.01f; } window.setAttributes(params); mCurrentDeltaBrintness = 0; } performLightChange(params.screenBrightness); }
上述代码就是在左边部分上下滑动的时候会被调用。
另附performLigthChange的代码。
private void performLightChange(float brightness) {
int resId = R.drawable.light_0;
if (brightness <= 0.01f) {
resId = R.drawable.light_0;
} else if (brightness <= 0.25f) {
resId = R.drawable.light_25;
} else if (brightness <= 0.5f) {
resId = R.drawable.light_50;
} else if (brightness < 1.0f) {
resId = R.drawable.light_75;
} else {
resId = R.drawable.light_100;
}
updateViews(resId, (int) (brightness * 100));
}
我们在举一个相对好切入的样例。
复制代码
1 package android.lekko.tools;
2
3 import android.app.Activity;
4 import android.content.ContentResolver;
5 import android.provider.Settings;
6 import android.provider.Settings.System;
7 import android.view.WindowManager;
8 import android.widget.Toast;
9
10 public class LightnessControl {
11 // 推断是否开启了自己主动亮度调节
12 public static boolean isAutoBrightness(Activity act) {
13 boolean automicBrightness = false;
14 ContentResolver aContentResolver = act.getContentResolver();
15 try {
16 automicBrightness = Settings.System.getInt(aContentResolver,
17 Settings.System.SCREEN_BRIGHTNESS_MODE) == Settings.System.SCREEN_BRIGHTNESS_MODE_AUTOMATIC;
18 } catch (Exception e) {
19 Toast.makeText(act,"无法获取亮度",Toast.LENGTH_SHORT).show();
20 }
21 return automicBrightness;
22 }
23 // 改变亮度
24 public static void SetLightness(Activity act,int value)
25 {
26 try {
27 System.putInt(act.getContentResolver(),System.SCREEN_BRIGHTNESS,value);
28 WindowManager.LayoutParams lp = act.getWindow().getAttributes();
29 lp.screenBrightness = (value<=0? 1:value) / 255f;
30 act.getWindow().setAttributes(lp);
31 } catch (Exception e) {
32 Toast.makeText(act,"无法改变亮度",Toast.LENGTH_SHORT).show();
33 }
34 }
35 // 获取亮度
36 public static int GetLightness(Activity act)
37 {
38 return System.getInt(act.getContentResolver(),System.SCREEN_BRIGHTNESS,-1);
39 }
40 // 停止自己主动亮度调节
41 public static void stopAutoBrightness(Activity activity) {
42 Settings.System.putInt(activity.getContentResolver(),
43 Settings.System.SCREEN_BRIGHTNESS_MODE,
44 Settings.System.SCREEN_BRIGHTNESS_MODE_MANUAL);
45 }
46 // 开启亮度自己主动调节
47 public static void startAutoBrightness(Activity activity) {
48 Settings.System.putInt(activity.getContentResolver(),
49 Settings.System.SCREEN_BRIGHTNESS_MODE,
50 Settings.System.SCREEN_BRIGHTNESS_MODE_AUTOMATIC);
51 }
52 }
复制代码
这是一个单独可工作的类,主要用于调节屏幕亮度。有部分凝视了,解释几个概念。不标准,供參考:
ContentResolver类,为訪问其他应用程序的对外共享数据提供方法,如上面获取、设置亮度时使用的System.getInt(),System.setInt()。 Activity类。android程序的主要类,一个界面必有此类提供后台支持,须要继承此类。 Settings类。android程序系统相关的设置类,各种设置都可在此找。 LayoutParams类,android接口 - 相关参数。如高度、宽度、亮度等。 Toast类。自己主动的消息框消失,光控。
大,调整屏幕亮度到这里,非常easy的。
Android开发调节屏幕亮度的更多相关文章
- android 设置系统屏幕亮度
/** * 获得当前屏幕亮度的模式 * SCREEN_BRIGHTNESS_MODE_AUTOMATIC=1 为自动调节屏幕亮度 * SCREEN_BRIGHTNESS_MODE_MANUAL=0 为 ...
- 联想Y450在Ubuntu下调节屏幕亮度
今天觉得ubuntu下编程时屏幕太亮,上网查了下怎样设置屏幕亮度,按住Fn 的同时调节,结果木有反应啊,杯催.... 继续搜索,最终解决了, happy... 1. 设置屏幕亮度初始值,解决reboo ...
- android调节屏幕亮度
一:只改变当前程序android屏幕亮度(1)方法:lp.screenBrightness 取值 0.0 -- 1.0 ※设定值(float)的范围,默认小于 0(系统设定).0.0(暗)-1.0(亮 ...
- [置顶] C# WINCE调节屏幕亮度
在wince里面保存屏幕亮度的值保存在注册表HKEY_CURRENT_USER\ControlPanel\\Backlight\Brightness里面,值的范围是0-100,所以要改变屏幕的亮度,只 ...
- iOS开发——设置屏幕亮度
想在APP里面调节屏幕的亮度,这只是个小众需求.而且,虽然可以直接调节手机的亮度,但是它还是个需求,客户有需求,剩下的就是我们的事了,好了,吐槽到此结束. 刚拿到这个需求的人,或许想的是直接对view ...
- ArchLinux 调节屏幕亮度和音量大小
我使用的是dwm,所以这种琐碎小事还要我们亲自动手, 以后考虑做个脚本,把声音调节.屏幕亮度什么的统统塞进去 屏幕亮度 # 查看亮度最大值 cat /sys/class/backlight/intel ...
- manjaro 手动调节屏幕亮度
1 问题描述 manjaro版本20.0,桌面XFCE,设置之类的地方没有屏幕亮度调节的功能. 2 解决方案 解决方案来自arch wiki. 亮度由ACPI内核模块控制,这个模块的接口在以下位置: ...
- 微信小程序开发 -- 设置屏幕亮度
wx.setScreenBrightness(OBJECT) 设置屏幕亮度. OBJECT参数说明: 参数 类型 必填 说明 value Number 是 屏幕亮度值,范围 0~1,0 最暗,1 最亮 ...
- vc++ 调用winapi调节屏幕亮度
!!版权声明:本文为博主原创文章,版权归原文作者和博客园共有,谢绝任何形式的 转载!! 作者:mohist ---- 已经更正文章中错误的地方, 时间: 10/10/2020--------- 自己封 ...
随机推荐
- Swift - 使用UIWebView和UIToolbar制作一个浏览器
使用网页控件(UIWebView)与工具栏控件(UIToolbar),我们可以自制一个小型的浏览器,其功能如下: 1,输入网址,点击“Go”按钮加载网页 2,加载过程中有进度条,同时可以点击停止按钮取 ...
- Qt多线程(有详细例子)
Qt线程类 Qt 包含下面一些线程相关的类:QThread 提供了开始一个新线程的方法QThreadStorage 提供逐线程数据存储QMutex 提供相互排斥的锁,或互斥量QMutexLocker ...
- 搜索引擎爬虫蜘蛛的USERAGENT大全
搜索引擎爬虫蜘蛛的USERAGENT大全 搜索引擎爬虫蜘蛛的USERAGENT收集,方便制作采集的朋友. 百度爬虫 * Baiduspider+(+http://www.baidu.com/sea ...
- 论javascript模块化的优缺
如今backbone.emberjs.spinejs.batmanjs 等MVC框架侵袭而来.CommonJS.AMD.NodeJS.RequireJS.SeaJS.curljs等模块化的JavaSc ...
- [c++语法]类
什么是类 类 是 面向对象的基础.c里面是没有对象的,只有数据,即静态的死物. 从面向过程升级到面向对象后,有了对象的概念,对象是数据与方法的合体,是动态的活物. 类代表着一类事物的特征.而对象,是类 ...
- [C++]C++中的运行时类型检测
Date:2014-1-3 Summary: 使用C++中的运行时类型检测.(文章重点在于记录本人的使用情况,并非深层讨论RTTI) Contents:写习惯C#的我,在C++依然存在哪些.NET的惯 ...
- IOS学习之路二十(程序json转换数据的中文字符问题解决)
ios请求web中的json数据的时候经常出现乱码问题: 例如请求结果可能如下:"\U00e5\U00a5\U00bd\U00e8\U00ae\U00a4" 在网上查到的解决方法是 ...
- android设置中的Preferencescreen使用方法介绍与分析
今天主要研究了一下设置中的Preferencescreen应用,它不仅可以作为设置界面显示,并且还可以启动activity,以下主要是对启动activity的介绍 1. Preferencescree ...
- Android照片墙完整版,的完美结合LruCache和DiskLruCache
转载请注明出处:http://blog.csdn.net/guolin_blog/article/details/34093441 在上一篇文章其中,我们学习了DiskLruCache的概念和基本使用 ...
- 极路由1s,固件需要刷入RipOS系统的加40块
极路由1s,固件需要刷入RipOS系统的加40块,集成wifidog功能,wifi广告路由器的理想选择功能. 经过测试,无线性能稳定,无线可带32个手机客户端. 具体配置: 7620CPU ,主频58 ...