安卓的苹果怎么调闪光灯亮度度能不能调的?

前言:上一篇文章中讲述了一下安卓音量大小调节的实现,既然如此在这一篇文章中便一起来熟悉下屏幕亮度大小的调节实现方法吧。
安卓屏幕亮度调节可以分为三个层次,分别是系统屏幕亮度调节、APP屏幕调节和当前屏幕调节,系统调节顾名思义是三者里面全局性最高的,可以把其看作系统设置中的亮度调节;APP屏幕调节,安卓系统本身是不支持统一改变某一APP的屏幕亮度的,因此并没有提供相应的API,但是可以通过修改系统屏幕亮度或者当前屏幕亮度来实现;第三个则是咱们今天的主角,改变当前屏幕的亮度。
幸运的是,安卓系统针对如何改变当前屏幕的亮度提供了相应的接口,我们可以通过api快速的实现屏幕亮度,下面介绍一种常见的写法:
Window window = activity.getWindow();
WindowManager.LayoutParams params = window.getAttributes();
params.screenBrightness = screenB
window.setAttributes(params);
其中,screenBrightness的取值范围是0到1
前面提到过,系统屏幕亮度调节是全局性最高的,因此当前屏幕的亮度是受到系统亮度影响的,可以通过这段代码(Settings.System.getInt(getContentResolver(), Settings.System.SCREEN_BRIGHTNESS);)获取系统当前亮度,其取值范围是0-255的int类型
我们假定亮度值变动范围是5,也就是每次增加或者减小5,让我们一起编写一个小demo来熟悉下:
第一步,界面实现
&LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:paddingBottom="@dimen/activity_vertical_margin"
android:paddingLeft="@dimen/activity_horizontal_margin"
android:paddingRight="@dimen/activity_horizontal_margin"
android:paddingTop="@dimen/activity_vertical_margin"
android:background="#ffff11"
android:orientation="vertical"&
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:background="#ffffff"
android:layout_margin="10dp"
android:textColor="#000000"
android:onClick="screenUp"
android:text="亮"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:background="#ffffff"
android:layout_margin="10dp"
android:textColor="#000000"
android:onClick="screenDown"
android:text="暗"
/&&/LinearLayout&
第二步,定义变量,当前屏幕亮度并获取当前系统亮度
private int targetB//屏幕当前亮度
targetBrightness = Settings.System.getInt(getContentResolver(), Settings.System.SCREEN_BRIGHTNESS);
第三步,定义方法及逻辑实现
首先,屏幕亮度增加部分代码如下:
public void screenUp(View view) {
// TODO Auto-generated method stub
Window window = this.getWindow();
WindowManager.LayoutParams params = window.getAttributes();
targetBrightness+=5;
if(targetBrightness&=255){
targetBrightness=255;
params.screenBrightness = targetBrightness/255f;
window.setAttributes(params); }
减小部分代码:
public void screenDown(View view) {
// TODO Auto-generated method stub
Window window = this.getWindow();
WindowManager.LayoutParams params = window.getAttributes();
targetBrightness-=5;
if (targetBrightness&=0) {
targetBrightness=1; }
params.screenBrightness = targetBrightness/255f;
window.setAttributes(params); }细心的朋友可以看到在两个方法中我都做了一个if判断,这是因为系统亮度的取值范围是0-255,而如果params.screenBrightness的取值小于0的话,则是自适应系统亮度,便无法达到我们想要的效果最后,测试大功告成
没有更多推荐了,Android 平台可以控制闪光灯亮度的手电筒 APP 有哪些? - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
已注册用户请 &
Android 平台可以控制闪光灯亮度的手电筒 APP 有哪些?
09:47:22 +08:00 · 2257 次点击
存在“控制闪光灯 LED 亮度”这个特性的地方:
硬件:手机拍照时闪关灯的预闪与快门
软件: iOS10 自带手电筒
如果靠第三方 APP 实现不了,那还有什么其他方法?
4 回复 &| &直到
17:45:17 +08:00
& & 09:52:08 +08:00
原生 Android 没有这个功能,国内有些定制过的系统支持
& & 12:37:46 +08:00 via Android
调节电流不太可能,难道得 PWM 么…
& & 20:34:32 +08:00
@ 我想知道有关调节 LED 亮度 API 是什么
& & 17:45:17 +08:00
你要的是这个吗?
& · & 1510 人在线 & 最高记录 3762 & · &
创意工作者们的社区
World is powered by solitude
VERSION: 3.9.8.1 · 17ms · UTC 01:53 · PVG 09:53 · LAX 18:53 · JFK 21:53? Do have faith in what you're doing.如何调节闪光灯亮度_百度知道
如何调节闪光灯亮度
自己调用了闪光灯,但如何调节他的亮度呢?...
自己调用了闪光灯,但如何调节他的亮度呢?
答题抽奖
首次认真答题后
即可获得3次抽奖机会,100%中奖。
来自电脑网络类芝麻团
采纳数:504
获赞数:398
参与团队:
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 =  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亮度更加简单有效。
目前还不行,api没提供,htc的机器多数有这样的app,可能是他们用的非开放方法。现在市场上的android的手电筒都是控制的LED实现的。
楼主问的应该是像机的闪光灯,版主给的屏幕的亮度。
为你推荐:
其他类似问题
您可能关注的内容
个人、企业类
违法有害信息,请在下方选择后提交
色情、暴力
我们会通过消息、邮箱等方式尽快将举报结果通知您。后使用快捷导航没有帐号?
只需一步,快速开始
查看: 59|回复: 8
在线时间68 小时G币1172 最后登录注册时间帖子阅读权限70UID5313339
学士, 积分 929, 距离下一级还需 171 积分
TA的每日心情开心 23:52签到天数: 2 天[LV.1]初来乍到
G币1172 最后登录注册时间
马上注册,结交更多机友,下载更多应用,让你轻松玩转手机。
已有帐号?   下载游戏和软件,请【】进入机锋市场!
之前看过一篇帖子,在Re里修改一个数值,重启后就能改变闪光灯的亮度,各位机油有看过的吗?
在线时间0 小时G币1091 最后登录注册时间帖子阅读权限100UID
博士, 积分 3456, 距离下一级还需 44 积分
TA的每日心情无聊 23:00签到天数: 496 天[LV.9]以坛为家II
G币1091 最后登录注册时间
去看我发的帖子,已经沉到海底了!
在线时间89 小时G币153 最后登录注册时间帖子阅读权限50UID7532267
大学专科, 积分 270, 距离下一级还需 130 积分
TA的每日心情衰 10:23签到天数: 29 天[LV.4]偶尔看看III
G币153 最后登录注册时间
,二楼的原创
<p id="rate_77327" onmouseover="showTip(this)" tip="很给力!&经验值 + 2
" class="mtn mbn">
K750c(2007) -& W508(2010) -& Lt18i(2011) -&lt29i(2013) -& l55t(2014)
在线时间68 小时G币1172 最后登录注册时间帖子阅读权限70UID5313339
学士, 积分 929, 距离下一级还需 171 积分
TA的每日心情开心 23:52签到天数: 2 天[LV.1]初来乍到
G币1172 最后登录注册时间
丿Need丶by灼儿 发表于
去看我发的帖子,已经沉到海底了!
非常感谢!!!
在线时间68 小时G币1172 最后登录注册时间帖子阅读权限70UID5313339
学士, 积分 929, 距离下一级还需 171 积分
TA的每日心情开心 23:52签到天数: 2 天[LV.1]初来乍到
G币1172 最后登录注册时间
ntlvxin 发表于
http://bbs.gfan.com/android--1.html,二楼的原创
非常感谢机友!
在线时间3 小时G币202 最后登录注册时间帖子阅读权限80UID
研究生, 积分 1571, 距离下一级还需 129 积分
TA的每日心情慵懒 20:45签到天数: 28 天[LV.4]偶尔看看III
G币202 最后登录注册时间
丿Need丶by灼儿 发表于
去看我发的帖子,已经沉到海底了!
能问下增大默认音量是修改那个文件不 ?
签名是咩&&能吃么 。
在线时间0 小时G币1091 最后登录注册时间帖子阅读权限100UID
博士, 积分 3456, 距离下一级还需 44 积分
TA的每日心情无聊 23:00签到天数: 496 天[LV.9]以坛为家II
G币1091 最后登录注册时间
Azerothsaver 发表于
能问下增大默认音量是修改那个文件不 ?
这个就不知道了!
你把我灌醉,却不和我睡!
在线时间0 小时G币326 最后登录注册时间帖子阅读权限70UID
学士, 积分 705, 距离下一级还需 395 积分
TA的每日心情怒 09:02签到天数: 42 天[LV.5]常住居民I
G币326 最后登录注册时间
我看看!!!
在线时间0 小时G币0 最后登录注册时间帖子阅读权限10UID
幼儿园, 积分 1, 距离下一级还需 14 积分
该用户从未签到
G币0 最后登录注册时间
谢谢 你的帖子帮了大忙
Powered by

我要回帖

更多关于 闪光灯亮度 的文章

 

随机推荐