Android 按键 每次调节亮度时亮度框消失时间需要重新倒计时
Posted 王睿丶
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Android 按键 每次调节亮度时亮度框消失时间需要重新倒计时相关的知识,希望对你有一定的参考价值。
【思路】
- 1、每次点击亮度键时,我们需要发送一个广播给BrightnessDialog 进行后台计算
- 2、创建 num变量,表示 来回点击标志。
- 3、BrightnessDialog.java 的后台, 判断对话框是否需要自动关闭,每三秒请求一次,以num为状态标准
- 4、判断逻辑为:每次点击num+1,三秒后计时器请求判断对话框是否需要自动关闭,若num为0就会关闭,若num不为0,则继续显示且重新在后台计算。
frameworks/base/services/core/java/com/android/server/policy/PhoneWindowManager.java
public long interceptKeyBeforeDispatching(IBinder focusedToken, KeyEvent event,int policyFlags)
else if (keyCode == KeyEvent.KEYCODE_BRIGHTNESS_UP || keyCode == KeyEvent.KEYCODE_BRIGHTNESS_DOWN)
if (down)
//每次点击亮度按钮,都需要重新计算后台对话框自动消失的时间
Intent intent = new Intent("xxx.brightness");
mContext.sendBroadcast(intent);
return -1;
frameworks/base/packages/SystemUI/src/com/android/systemui/settings/BrightnessDialog.java
//num表示 来回点击标志。
private int num = 0;
private TimerTask task;
private Timer timer = new Timer();
//只需单击亮度按钮即可标记 +1
private final BroadcastReceiver myReceiver = new BroadcastReceiver()
@Override
public void onReceive(Context context, Intent intent)
num++;
;
@Override
protected void onStart()
super.onStart();
//注册广播
registerReceiver(myReceiver, new IntentFilter("xxx.brightness"));
//判断对话框是否需要自动关闭,每三秒请求一次,以num为状态标准
task = new TimerTask()
@Override
public void run()
if (num==0) finish();
num = 0;
;
timer.schedule(task,3000,3000);
@Override
protected void onStop()
super.onStop();
MetricsLogger.hidden(this, MetricsEvent.BRIGHTNESS_DIALOG);
mBrightnessController.unregisterCallbacks();
//取消注册
unregisterReceiver(myReceiver);
//销毁计时器
timer.cancel();
task.cancel();
timer = null;
task = null;
以上是关于Android 按键 每次调节亮度时亮度框消失时间需要重新倒计时的主要内容,如果未能解决你的问题,请参考以下文章
Android 按键 按键调节亮度,亮度条不是等比减少/增加的
Android 按键 在视频播放器下,按键调节亮度与视频播放器图标UI不同步