当前位置: 首页 > news >正文

Android 上下滑隐藏显示状态栏

一、DisplayPolicy类中监听滑动事件,然后发送广播事件

Android12类路径:
frameworks/base/services/core/java/com/android/server/wm/DisplayPolicy.javamSystemGestures = new SystemGesturesPointerEventListener(mUiContext, mHandler,new SystemGesturesPointerEventListener.Callbacks() {@Overridepublic void onSwipeFromTop() {synchronized (mLock) {if (mStatusBar != null) {requestTransientBars(mStatusBar);}// 新增mContext.sendBroadcast(new Intent("com.android.action.showstatusbar")); //自定义优化显示状态栏checkAltBarSwipeForTransientBars(ALT_BAR_TOP);}}@Overridepublic void onSwipeFromBottom() {synchronized (mLock) {if (mNavigationBar != null&& mNavigationBarPosition == NAV_BAR_BOTTOM) {requestTransientBars(mNavigationBar);}// 新增mContext.sendBroadcast(new Intent("com.android.action.hidestatusbar")); // 新增mContext.sendBroadcast(new Intent("com.android.action.swipefrombottom")); //自定义上滑广播checkAltBarSwipeForTransientBars(ALT_BAR_BOTTOM);}}

二、状态的显示与隐藏方法

类中frameworks/base/packages/SystemUI/src/com/android/systemui/statusbar/phone/StatusBar.java

新增状态栏显示与隐藏的两个方法

	// 显示状态栏private void showStatusBar(){if(mPhoneStatusBarWindow!=null){mPhoneStatusBarWindow.setVisibility(View.VISIBLE);}}// 隐藏状态栏private void hideStatubar(){if(mPhoneStatusBarWindow!=null){mPhoneStatusBarWindow.setVisibility(View.GONE);}}

三、注册广播

类中 frameworks/base/packages/SystemUI/src/com/android/systemui/statusbar/phone/StatusBar.java

添加广播动作

internalFilter.addAction("com.android.action.showstatusbar");

internalFilter.addAction("com.android.action.hidestatusbar");

IntentFilter internalFilter = new IntentFilter();internalFilter.addAction(BANNER_ACTION_CANCEL);internalFilter.addAction(BANNER_ACTION_SETUP);//添加广播动作internalFilter.addAction("com.android.action.swipefrombottom");//添加状态栏隐藏显示广播internalFilter.addAction("com.android.action.showstatusbar");internalFilter.addAction("com.android.action.hidestatusbar");mContext.registerReceiver(mBannerActionBroadcastReceiver, internalFilter, PERMISSION_SELF,null);

四、调用显示隐藏

类中frameworks/base/packages/SystemUI/src/com/android/systemui/statusbar/phone/StatusBar.java

调用

     else if("com.android.action.showstatusbar".equals(action)){
               showStatusBar();
           }else if("com.android.action.hidestatusbar".equals(action)){
               hideStatubar();
           }

    private final BroadcastReceiver mBannerActionBroadcastReceiver = new BroadcastReceiver() {@Overridepublic void onReceive(Context context, Intent intent) {String action = intent.getAction();if (BANNER_ACTION_CANCEL.equals(action) || BANNER_ACTION_SETUP.equals(action)) {NotificationManager noMan = (NotificationManager)mContext.getSystemService(Context.NOTIFICATION_SERVICE);noMan.cancel(com.android.internal.messages.nano.SystemMessageProto.SystemMessage.NOTE_HIDDEN_NOTIFICATIONS);Settings.Secure.putInt(mContext.getContentResolver(),Settings.Secure.SHOW_NOTE_ABOUT_NOTIFICATION_HIDING, 0);if (BANNER_ACTION_SETUP.equals(action)) {mShadeController.animateCollapsePanels(CommandQueue.FLAG_EXCLUDE_RECENTS_PANEL,true /* force */);mContext.startActivity(new Intent(Settings.ACTION_APP_NOTIFICATION_REDACTION).addFlags(Intent.FLAG_ACTIVITY_NEW_TASK));}}// 分割线else if("com.android.action.swipefrombottom".equals(action)){//上滑事件Log.d("StatusBar","swipefrombottom---666--");if(!navigationBarState){navigationBarState = true;//加载导航栏createNavigationBar(result);mHandler.postDelayed(new Runnable() {@Overridepublic void run() {navigationBarState = false;// 移除导航栏mNavigationBarController.removeNavigationBar(mDisplayId);}},6000);}}else if("com.android.action.swipefromtop".equals(action)){Log.d("StatusBar","swipefromtop--666-");//下滑事件mNavigationBarController.removeNavigationBar(mDisplayId);}else if("com.android.action.showstatusbar".equals(action)){showStatusBar();}else if("com.android.action.hidestatusbar".equals(action)){hideStatubar();}// 分割线}};


 

相关文章:

Android 上下滑隐藏显示状态栏

一、DisplayPolicy类中监听滑动事件,然后发送广播事件 Android12类路径: frameworks/base/services/core/java/com/android/server/wm/DisplayPolicy.javamSystemGestures new SystemGesturesPointerEventListener(mUiContext, mHandler,new SystemGest…...

USBCAN-II/II+使用方法以及qt操作介绍

一.USBCAN-II/II介绍 USBCAN-II/II 是一款常用的 USB-CAN 转换器,广泛应用于汽车电子、工业自动化等领域。以下是使用该设备的一般步骤和方法: 1. 硬件连接 连接设备:将 USBCAN-II/II 的 USB 接口连接到计算机的 USB 端口。 连接 CAN 网络…...

笔记-系统规划与管理师-案例题-2022年-IT服务部署实施

【说明】 某大型企业去年信息化投入大,完成了重点核心业务系统的建设。由于应急相应预案制定得不充分并且未开展演练,出现了系统性故障时,部分关键的应用系统不可用且在12小时内未能完成恢复业务,给企业带来了较大损失。 为加强该…...

Kubernetes 清理资源常用的 Kubernetes 清理命

清理特定状态的 Pod: 清理 Evicted 状态的 Pod: kubectl get pods --all-namespaces -o wide | grep Evicted | awk {print $1,$2} | xargs -L1 kubectl delete pod -n清理 Error 状态的 Pod: kubectl get pods --all-namespaces -o wide | g…...

【数据结构初阶】二叉树--基本概念

hello! 目录 一、树 1.1 树的概念和结构 1.2 树的相关术语 1.3 树的表示 1.4 树形结构实际应用场景 二、二叉树 2.1 概念和结构 2.2 特殊的二叉树 2.2.1 满二叉树 2.2.2 完全二叉树 2.3 二叉树的存储结构 2.3.1 顺序结构 2.3.2 链式结构 …...

Pytorch添加自定义算子之(12)-开闭原则设计tensorrt和onnxruntime推理语义分割模型

一、开闭原则 开闭原则是SOLID原则中的一个,指的是尽量使用开放扩展,关闭修改的设计原则。 在C++中如何使用开闭原则导出动态库,可以按照以下步骤进行: 定义抽象基类:定义动态库中的抽象基类,该基类应该封装可扩展的接口。 实现派生类:实现基类的派生类,这些派生类将封…...

第二百零九节 Java格式 - Java数字格式类

Java格式 - Java数字格式类 以下两个类可用于格式化和解析数字: java.text.NumberFormatjava.text.DecimalFormat NumberFormat 类可以格式化一个数字特定地区的预定义格式。 DecimalFormat 类可以格式化数字以特定区域设置的自定义格式。 NumberFormat类的 getXXXInstance…...

LSI-9361阵列卡笔记

背景 要将raid0更改为JBOD直通模式 注意的点是要先将raid模式调整为JBOD之后重启机器,即可 备注:转换过程中硬盘中的数据未丢失。 步骤贴图 refer https://zhiliao.h3c.com/questions/dispcont/123250 https://blog.csdn.net/GreapFruit_J/article/…...

ArcGIS热点分析 (Getis-Ord Gi*)——基于地级市尺度的七普人口普查数据的热点与冷点分析

先了解什么是热点分析 ? 热点分析 (Getis-Ord Gi*) 是一种用于空间数据分析的技术,主要用于识别地理空间数据中值的聚集模式,可以帮助我们理解哪些区域存在高值或低值的聚集,这些聚集通常被称为“热点”或“冷点”,Gi* 统计量为…...

ASIACRYPT 2021

分类文章编号获奖论文1-3后量子密码4-9多方计算10-15物理攻击,泄露和对策16-21理论22-27公钥密码和鉴权密钥交换28-33高级加密和签名34-39对称密钥构建40-46量子安全47-53获奖论文54对称密码分析55-66增强型公钥加密和时间锁难题67-72同态加密和加密搜索73-77NIZK和SNARK78-80…...

C#学习之路day1

目录 一、概念:.net和c# 二、.net发展方向 三、.Net两种交互模式 四、创建项目 五、vs的组成部分 六、我的第一个C#程序 七、多个项目时启动项目的设置 八、注释 九、快捷键 一、概念:.net和c# 1、.net/dotnet :一般指.Net Framework框架&#…...

【安当产品应用案例100集】010-基于国密UKEY的信封加密应用案例

安当有个客户开发了一套C/S架构的软件,Server在云端,Client由不同的用户使用。最初软件设计开发的时候,没有考虑数据安全形势日渐严峻的问题,Server端和Client端直接就建立一个socket连接来进行通信,Server端发出去的数…...

扫码点餐系统小程序功能分析

扫码点餐系统小程序通常具备以下核心功能: 用户界面:提供直观易用的界面,方便用户浏览菜单、选择菜品、查看订单状态等 。菜单展示:展示餐厅的菜单,包括菜品图片、价格、描述等信息 。扫码点餐:用户通过…...

网络安全——基础知识记忆梳理

1. SQL注入攻击 SQL注入攻击是一种常见的网络安全威胁,它利用Web应用程序中对用户输入的数据的不正确处理,攻击者可以在SQL查询中注入恶意代码,从而执行非授权的数据库操作。这种攻击方式可以导致数据泄漏、数据篡改、绕过认证等多种安全问题…...

GitHub开源的轻量级文件服务器,可docker一键部署

文件服务器 介绍安装使用命令使用API调用 介绍 项目github官网地址 Dufs是一款由Rust编写的轻量级文件服务器,不仅支持静态文件服务,还能轻松上传、下载、搜索文件,甚至支持WebDAV,让我们通过Web方式远程管理文件变得轻而易举。…...

Scratch编程深度探索:解锁递归与分治算法的奥秘

标题:Scratch编程深度探索:解锁递归与分治算法的奥秘 在编程的世界里,递归和分治算法以其精妙的逻辑结构和解决问题的能力而著称。Scratch,这款专为儿童和初学者设计的图形化编程工具,是否能够支持实现这样复杂的逻辑…...

使用docker compose一键部署 Portainer

使用docker compose一键部署 Portainer Portainer 是一款轻量级的应用,它提供了图形化界面,用于方便地管理Docker环境,包括单机环境和集群环境。 1、创建安装目录 mkdir /data/partainer/ -p && cd /data/partainer2、创建docker…...

js原生模板引擎

在JavaScript中,可以使用模板字符串(template strings)来创建简单的模板。模板字符串是用反引号(`)标识的字符串,其中内嵌表达式使用${}格式。 下面是一个简单的模板函数示例,它接受一个对象作为参数,并使用模板字符串来生成一个HTML字符串。 function createTemplat…...

Java面试题———MySql篇③

目录 1.查询语句执行流程 2.索引的数据结构是什么 3.数据库中的锁有哪些 4.MySQL日志类型 5.MySQL主从复制的流程 6.谈谈你对sql的优化的经验 1.查询语句执行流程 一条查询语句到达MySQL数据库之后,数据库中的各个组件会按照顺序执行自己的任务 首先是连接器…...

ArcGis在线地图插件Maponline(好用版)

ArcGis加载插件,可在线浏览谷歌地图、天地图、高德地图、必应地图等多种,包含街道、影像、标注地图等信息(谷歌地图需自备上网手段),免费注册账号即可使用,可加载无水印底图。 与大地2000坐标无需配准直接使…...

如何快速解决Funannotate数据库安装失败:终极完整指南

如何快速解决Funannotate数据库安装失败:终极完整指南 【免费下载链接】funannotate Eukaryotic Genome Annotation Pipeline 项目地址: https://gitcode.com/gh_mirrors/fu/funannotate Funannotate作为一款强大的真核生物基因组注释流程工具,其…...

MTKClient终极指南:免费解锁联发科设备的完整刷机解决方案

MTKClient终极指南:免费解锁联发科设备的完整刷机解决方案 【免费下载链接】mtkclient MTK reverse engineering and flash tool 项目地址: https://gitcode.com/gh_mirrors/mt/mtkclient MTKClient是一款专为联发科(MediaTek)芯片设备…...

【M1 Mac游戏开发环境】从零到一:VSCode、Git与效率工具的终极配置指南

1. M1 Mac开箱配置:为Unity开发者量身定制 刚拿到M1 Mac的Unity开发者们,你们是否遇到过这样的场景:打开VSCode写C#脚本时智能提示迟迟不出现,Git命令输到一半发现没有自动补全,或是被各种环境配置问题折腾得焦头烂额&…...

软考 系统架构设计师历年真题集萃(253)

接前一篇文章:软考 系统架构设计师历年真题集萃(252) 第505题 给出关系R(U, F), U = {A,B,C,D,E}, F={A->B, D->C, BC->E, AC->B},求属性闭包的等式成立的是( )。R的候选关键字为( )。 第1空 A. B. C. D. 正确答案:D。 第2空 A. AD B. AB C…...

从零构建Transformer:机器学习深度研习笔记与实战解析

1. 从零到一:我的机器学习深度研习之旅作为一名在数据科学和机器学习领域摸爬滚打了十多年的从业者,我深知这个领域的知识迭代速度有多快。从早期的统计学习到如今的生成式AI,技术栈的深度和广度都在以惊人的速度扩展。几年前,当我…...

EMAC寄存器配置与网络性能优化实战

1. EMAC寄存器概述与核心功能以太网媒体访问控制器(EMAC)是现代嵌入式系统中实现网络通信的核心硬件模块,其寄存器配置直接决定了数据传输的可靠性、实时性和效率。作为硬件与协议栈之间的桥梁,EMAC通过精心设计的寄存器组实现了对…...

AzurLaneAutoScript:碧蓝航线终极自动化解决方案

AzurLaneAutoScript:碧蓝航线终极自动化解决方案 【免费下载链接】AzurLaneAutoScript Azur Lane bot (CN/EN/JP/TW) 碧蓝航线脚本 | 无缝委托科研,全自动大世界 项目地址: https://gitcode.com/gh_mirrors/az/AzurLaneAutoScript 还在为碧蓝航线…...

微型环境传感器技术:PM2.5与VOC检测的突破与应用

1. 个人空气质量监测的技术革命在深圳的一个典型工作日早晨,张工程师像往常一样准备出门上班。他习惯性地查看手机上的空气质量指数,发现室外PM2.5数值高达85μg/m(超过WHO安全标准3倍以上)。犹豫片刻后,他戴上了N95口…...

好用的AI软件开发选哪家

在当今数字化飞速发展的时代,AI软件已经成为众多企业和个人提升效率、创新业务的重要工具。然而,面对市场上众多的AI软件开发公司,如何选择一家靠谱且好用的公司成为了许多人的困扰。今天,我就为大家推荐广州飞进信息科技有限公司…...

进化发育生物学启发AI新范式:基因调控、弱连接与局部变异选择

1. 项目概述:从生物进化到机器学习的范式迁移在人工智能领域,我们常常陷入一种“局部最优”的困境:模型越做越大,参数越来越多,但系统的根本“智慧”——比如持续学习新任务而不遗忘旧知识、灵活重组已有技能解决新问题…...