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 按键 锁屏时禁止按键调节亮度

Android 按键 按键调节亮度,亮度条不是等比减少/增加的

Android 按键 在视频播放器下,按键调节亮度与视频播放器图标UI不同步

Android 按键 亮度对话框滑动时不能消失,点击或滑动需要动态改变亮度值和动画效果

Android SystemUI 修复:先调节通知栏上的亮度条,再使用键盘增加亮度时会先减小亮度再增加