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

Android BSP 开发之六

1.设定Android settings中某个xml文件(包括其子项)或者某个Preference不被搜索到
 

设定某个xml文件(包括子项)不被搜索到
    找到该xml文件对应的fragment java文件中的SEARCH_INDEX_DATA_PROVIDER,在该provider中对isPageSearchEnabled方法进行重写并返回false.
 

 public static final SearchIndexProvider SEARCH_INDEX_DATA_PROVIDER =new BaseSearchIndexProvider() {@Overridepublic List<SearchIndexableResource> getXmlResourcesToIndex(Context context,boolean enabled) {List<SearchIndexableResource> indexables = new ArrayList<>();SearchIndexableResource indexable = new SearchIndexableResource(context);indexable.xmlResId = R.xml.accessibility_vibration_settings;indexables.add(indexable);return indexables;}@Overrideprotected boolean isPageSearchEnabled(Context context) {return false;}};

设定特定的Preference不被搜索到
    找到这个特定的Preference对应的xml文件所在的fragment java文件中的SEARCH_INDEX_DATA_PROVIDER, 对该Provider中的getNonIndexableKeys方法进行重写.
 

 public static final SearchIndexProvider SEARCH_INDEX_DATA_PROVIDER =new BaseSearchIndexProvider() {@Overridepublic List<SearchIndexableResource> getXmlResourcesToIndex(Context context,boolean enabled) {List<SearchIndexableResource> indexables = new ArrayList<>();SearchIndexableResource indexable = new SearchIndexableResource(context);indexable.xmlResId = R.xml.accessibility_settings;indexables.add(indexable);return indexables;}@Overridepublic List<String> getNonIndexableKeys(Context context) {final List<String> nonIndexableKeys = super.getNonIndexableKeys(context);nonIndexableKeys.add("vibration_preference_screen"); //这个key为特定preference keyreturn nonIndexableKeys;}};

2.在长按Power弹出的选项中添加或删除项


    在长按power弹出的选项中添加或删除某一项,在frameworks/base/packages/SystemUI/src/com/android/systemui/globalactions/GlobalActionsDialog.java文件中定义一个私有类继承SinglePressAction.
 

private final class BatteryShelfModeAction extends SinglePressAction{private BatteryShelfModeAction() {super(R.drawable.ic_lock_power_off,    //display iconandroid.R.string.battery_shelf_mode_title_in_power_menu);  //display icon label}@Overridepublic boolean showDuringKeyguard() {return true;}@Overridepublic boolean showBeforeProvisioning() {return true;}@Overridepublic void onPress() {// enter battery shelf modeIntent batteryShelfDialogIntent = new Intent();batteryShelfDialogIntent.setComponent(new ComponentName("com.wistron.touchfwupdate", "com.wistron.battery.BatteryShelfMode"));batteryShelfDialogIntent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);mContext.startActivity(batteryShelfDialogIntent);}}

GlobalActionsDialog.java文件中的createDialog 方法中找到globalActionsList
 

 mItems = new ArrayList<Action>();String[] defaultActions = mContext.getResources().getStringArray(R.array.config_globalActionsList);ArraySet<String> addedKeys = new ArraySet<String>();mHasLogoutButton = false;mHasLockdownButton = false;for (int i = 0; i < defaultActions.length; i++) {

frameworks/base/core/res/res/values/config.xml中的config_globalActionsList

添加key
 

<string-array translatable="false" name="config_globalActionsList"><item>power</item><item>restart</item><item>lockdown</item><item>logout</item><item>bugreport</item><item>screenshot</item><item>shelf_mode</item><item>emergency</item></string-array>

在 GlobalActionsDialog.java文件中的createDialog 方法中添加
 

for (int i = 0; i < defaultActions.length; i++) {String actionKey = defaultActions[i];if (addedKeys.contains(actionKey)) {// If we already have added this, don't add it again.continue;}if (GLOBAL_ACTION_KEY_POWER.equals(actionKey)) {mItems.add(new PowerAction());} else if (GLOBAL_ACTION_KEY_AIRPLANE.equals(actionKey)) {mItems.add(mAirplaneModeOn);} else if (GLOBAL_ACTION_KEY_BUGREPORT.equals(actionKey)) {if (Settings.Global.getInt(mContext.getContentResolver(),Settings.Global.BUGREPORT_IN_POWER_MENU, 0) != 0 && isCurrentUserOwner()) {mItems.add(new BugReportAction());}} else if (GLOBAL_ACTION_KEY_SILENT.equals(actionKey)) {if (mShowSilentToggle) {mItems.add(mSilentModeAction);}} else if (GLOBAL_ACTION_KEY_USERS.equals(actionKey)) {if (SystemProperties.getBoolean("fw.power_user_switcher", false)) {addUsersToMenu(mItems);}} else if (GLOBAL_ACTION_KEY_SETTINGS.equals(actionKey)) {mItems.add(getSettingsAction());} else if (GLOBAL_ACTION_KEY_LOCKDOWN.equals(actionKey)) {if (Settings.Secure.getIntForUser(mContext.getContentResolver(),Settings.Secure.LOCKDOWN_IN_POWER_MENU, 0, getCurrentUser().id) != 0&& shouldDisplayLockdown()) {mItems.add(getLockdownAction());mHasLockdownButton = true;}} else if (GLOBAL_ACTION_KEY_VOICEASSIST.equals(actionKey)) {mItems.add(getVoiceAssistAction());} else if (GLOBAL_ACTION_KEY_ASSIST.equals(actionKey)) {mItems.add(getAssistAction());} else if (GLOBAL_ACTION_KEY_RESTART.equals(actionKey)) {mItems.add(new RestartAction());} else if (GLOBAL_ACTION_KEY_SCREENSHOT.equals(actionKey)) {mItems.add(new ScreenshotAction());} else if (GLOBAL_ACTION_KEY_LOGOUT.equals(actionKey)) {if (mDevicePolicyManager.isLogoutEnabled()&& getCurrentUser().id != UserHandle.USER_SYSTEM) {mItems.add(new LogoutAction());mHasLogoutButton = true;}} else if (GLOBAL_ACTION_KEY_EMERGENCY.equals(actionKey)) {if (!mEmergencyAffordanceManager.needsEmergencyAffordance()) {mItems.add(new EmergencyDialerAction());}} else if (GLOBAL_ACTION_KEY_BATTERY_SHELF_MODE.equals(actionKey)) {
//                if (!SystemProperties.get("ro.boot.hwid", "0").equals("0"))mItems.add(new BatteryShelfModeAction());}else {Log.e(TAG, "Invalid global action key " + actionKey);}// Add here so we don't add more than one.addedKeys.add(actionKey);}

相关文章:

Android BSP 开发之六

1.设定Android settings中某个xml文件&#xff08;包括其子项&#xff09;或者某个Preference不被搜索到 设定某个xml文件(包括子项)不被搜索到 找到该xml文件对应的fragment java文件中的SEARCH_INDEX_DATA_PROVIDER,在该provider中对isPageSearchEnabled方法进行重写并…...

mybatis的使用,mybatis的实现原理,mybatis的优缺点,MyBatis缓存,MyBatis运行的原理,MyBatis的编写方式

文章目录 MyBatis简介结构图Mybatis缓存&#xff08;一级缓存、二级缓存&#xff09;MyBatis是什么&#xff1f;mybatis的实现原理JDBC编程有哪些不足之处&#xff0c;MyBatis是如何解决这些问题的&#xff1f;Mybatis优缺点优点缺点映射关系 MyBatis的解析和运行原理MyBatis的…...

Effective Modern C++(1.顶层const与底层const)

1.顶层const与底层const的定义 const修饰的变量不可以改变&#xff0c;那么他就是顶层const&#xff0c;如&#xff1a; const int a 10; 那么&#xff0c;对于 const int *const p new int(10); 第二个const就是顶层const&#xff0c;因为他修饰的是p&#xff1b;第一个…...

mmsegmentation学习笔记

mmsegmentation教程 下载预训练权重 github–>mmsegmentation–>model zoo–>XXX model(如&#xff1a;PSPNet)–>找到预选连权重与config的前缀一致&#xff1a;pspnet_r50-d8_4xb2-40k_cityscapes-512x1024 &#xff08;model&#xff09; 了解配置文件 查看…...

RabbitMQ简易安装

一般来说安装 RabbitMQ 之前要安装 Erlang &#xff0c;可以去Erlang官网下载。接着去RabbitMQ官网下载安装包&#xff0c;之后解压缩即可。 Erlang官方下载地址&#xff1a;Downloads - Erlang/OTP RabbitMQ官方下载地址&#xff1a;Downloading and Installing RabbitMQ —…...

Mac M1 安装Docker打包arm64的python项目的镜像包

1、首先安装Docker&#xff0c;到官网下载&#xff0c;选择apple chip版 Docker中文网 官网 2、双击下载的dmg文件&#xff0c;在弹出框中之间拖拽到右边 3、打开docker&#xff0c;修改国内镜像源&#xff0c;位置在配置-DockerEngine "registry-mirrors": ["…...

『OPEN3D』1.8 点云的配准理论

点云的配准是将不同的3D点云对齐成一个完成的点云模型&#xff1b;配准的目标是找到两帧点云之间的相对旋转&#xff08;rotation&#xff09;与平移&#xff08;translation&#xff09;&#xff0c;使得两份点云中有重叠的区域能够完好拼接。 点云配准示例图&#xff08;来自…...

Python数据结构

目录 5.1. 列表详解 5.1.1. 用列表实现堆栈 5.1.2. 用列表实现队列 5.1.3. 列表推导式 5.1.4. 嵌套的列表推导式 5.2. del 语句 5.3. 元组和序列 5.4. 集合 5.5. 字典 5.6. 循环的技巧 5.7. 深入条件控制 5.8. 序列和其他类型的比较 本章深入讲解之前学过的一些内容…...

突发!新华三总裁《致全体员工的一封信》,中高层全面降薪10%-20%!

* 你好&#xff0c;我是前端队长&#xff0c;在职场&#xff0c;玩副业&#xff0c;文末有福利&#xff01; 精彩回顾&#xff1a;进了央企&#xff0c;拿了户口&#xff0c;却感觉被困住了。 11月23号&#xff0c;某社交平台爆出了新华三总裁于英涛的《致全体员工的一封信》&a…...

QIIME 2介绍

QIIME 2&#xff08;Quantitative Insights Into Microbial Ecology 2&#xff09;是一个用于分析和解释微生物组数据的开源生物信息学工具。它是QIIME的第二个版本&#xff0c;经过重新设计以提高灵活性、可扩展性和可重复性。 1. 关于QIIME 2的一些重要特征和概念&#xff1…...

Spring Cloud Gateway 的简单介绍和基本使用

前言 本文主要对Spring Cloud Gateway进行简单的概念介绍&#xff0c;并通过多模块编程的方式进行一个简单的实操。 文章目录 前言1 什么是网关&#xff08;概念&#xff09;2 微服务中的网关2.1 问题12.2 问题2 3 网关作用4 Spring Cloud Gateway组成5 Spring Cloud Gateway基…...

Leaflet结合Echarts实现迁徙图

效果图如下&#xff1a; <!DOCTYPE html> <html><head><title>Leaflet结合Echarts4实现迁徙图</title><meta charset"utf-8" /><meta name"viewport" content"widthdevice-width, initial-scale1.0">…...

在mysql存储过程中间部分,使用游标遍历动态结果集(游标动态传参使用)

mysql游标动态传参实现&#xff08;动态游标&#xff09; 1.问题2.需求描述3.实现3.1.使用3.2.代码&#xff08;直接看这都可以&#xff09; 1.问题 众所周知&#xff0c;mysql存储过程功能是没有oracle的包功能强大的&#xff0c;但是在去O的趋势下&#xff0c;mysql存储过程的…...

全球SAR卫星大盘点与回波数据处理专栏目录

近年来&#xff0c;随着商业航天的蓬勃发展&#xff0c;商业SAR卫星星座成为美欧等主要航天国家的发展重点&#xff0c;目前已在全球范围内涌现出众多初创公司进军商业SAR领域&#xff0c;开始构建大规模商业微小SAR卫星星座&#xff0c;其所具有的创新服务能力将为传统的商业遥…...

C语言重点编程题——21-30

目录 21. 从键盘输入的10个整数中,找出第一个能被7整除的数。若找到,打印此数后退出循环;若未找到,打印"not exist" ★★★★22.有一个一维数组,内放10个学生成绩,写一个函数,求出平均分。 23.有N个学生,每个学生的信息包括学号、 性别、姓名、四门课的成绩…...

pip install 使用清华镜像源

pip install -i https://pypi.tuna.tsinghua.edu.cn/simple some-package 官方文档&#xff1a; pypi | 镜像站使用帮助 | 清华大学开源软件镜像站 | Tsinghua Open Source Mirror...

VBA技术资料MF86:将PPT文件批量另存为PDF文件

我给VBA的定义&#xff1a;VBA是个人小型自动化处理的有效工具。利用好了&#xff0c;可以大大提高自己的工作效率&#xff0c;而且可以提高数据的准确度。我的教程一共九套&#xff0c;分为初级、中级、高级三大部分。是对VBA的系统讲解&#xff0c;从简单的入门&#xff0c;到…...

taro h5 ios解决input不能自动获取焦点拉起键盘

描述&#xff1a;页面中有个按钮&#xff0c;点击跳转到第二个页面&#xff08;有input&#xff09;&#xff0c;能直接获取焦点拉起键盘输入 安卓&#xff1a; 直接用focus() ios&#xff1a; focus无效&#xff0c;必须手动拉起 原理&#xff1a; 点击按钮的时候拉起一…...

「Docker」如何在苹果电脑上构建简单的Go云原生程序「MacOS」

介绍 使用Docker开发Golang云原生应用程序&#xff0c;使用Golang服务和Redis服务 注&#xff1a;写得很详细 为方便我的朋友可以看懂 环境部署 确保已经安装Go、docker等基础配置 官网下载链接直达&#xff1a;Docker官网下载 Go官网下载 操作步骤 第一步 创建一个…...

Vue环境的搭建

1.Vue开发的两种方式 &#xff08;1&#xff09;核心包传统开发模式 基于html/css/js文件&#xff0c;直接引入&#xff0c;开发Vue。 &#xff08;2&#xff09;工程化开发模式&#xff08;更常用的一种&#xff09;&#xff1a; 主要是基于构建工具&#xff08;例如,webp…...

FastAPI-React性能优化:Celery异步任务与Redis消息队列

FastAPI-React性能优化&#xff1a;Celery异步任务与Redis消息队列 【免费下载链接】fastapi-react &#x1f680; Cookiecutter Template for FastAPI React Projects. Using PostgreSQL, SQLAlchemy, and Docker 项目地址: https://gitcode.com/gh_mirrors/fa/fastapi-rea…...

SEGGER Embedded Studio高效开发GD32的5个隐藏技巧(含UTF-8乱码解决方案)

SEGGER Embedded Studio高效开发GD32的5个隐藏技巧&#xff08;含UTF-8乱码解决方案&#xff09; 在嵌入式开发领域&#xff0c;GD32系列MCU凭借其出色的性价比和丰富的资源赢得了众多开发者的青睐。而SEGGER Embedded Studio&#xff08;简称SES&#xff09;作为一款专业的集成…...

YOLOv8目标检测实战指南:5个核心技巧掌握人脸与人体检测模型

YOLOv8目标检测实战指南&#xff1a;5个核心技巧掌握人脸与人体检测模型 【免费下载链接】adetailer 项目地址: https://ai.gitcode.com/hf_mirrors/Bingsu/adetailer 在计算机视觉领域&#xff0c;YOLOv8目标检测模型已经成为实时目标检测的黄金标准。Bingsu/adetaile…...

告别裸奔开发:手把手教你用英飞凌Traveo II SDL7.5.0快速点亮第一个LED

从零到一&#xff1a;Traveo II SDL7.5.0开发环境搭建与LED控制实战 第一次接触英飞凌Traveo II这类车规级MCU时&#xff0c;许多开发者会被其多核架构和丰富的外设资源所震撼——这就像突然从自行车换到了F1赛车&#xff0c;兴奋之余又担心无从下手。作为过来人&#xff0c;我…...

终极动态壁纸指南:让Linux桌面随时辰自动变换的完整教程

终极动态壁纸指南&#xff1a;让Linux桌面随时辰自动变换的完整教程 【免费下载链接】dynamic-wallpaper A simple bash script to set wallpapers according to current time, using cron job scheduler. 项目地址: https://gitcode.com/gh_mirrors/dy/dynamic-wallpaper …...

WVP-PRO流媒体服务器实战:如何优雅地自动清理无人观看的国标/代理流?

WVP-PRO流媒体服务器资源优化&#xff1a;无人观看流自动清理实战指南 在视频监控和流媒体服务运维中&#xff0c;服务器资源的高效利用是保证系统稳定运行的关键。想象一下&#xff0c;当你的平台同时承载数百路摄像头直播和点播回放时&#xff0c;那些已经无人观看却仍在消耗…...

海南某高校xss漏洞

今天为大家分享一个最近发现的一个xss漏洞。1.在某高校官网找到领导信箱&#xff0c;然后在内容里输入xss漏洞的js测试代码(<script>alert("xss测试成功&#xff01;")</script>)测试能否执行。2.接着查询信件&#xff0c;发现可以执行&#xff0c;也就是…...

ORM性能测试Benchmark(最终版)腺

7.1 初识三维模型 7.1.1 三维模型的数据载体 随着计算机图形技术的发展&#xff0c;我们或多或少都会见过或者听说过三维模型。笔者始终记得小时候第一次在电视上看到三维动画《变形金刚&#xff1a;超能勇士》的震撼感受&#xff1b;而现在我们已经可以在手机上玩三维游戏《王…...

Z-Image-GGUF助力游戏开发:快速生成概念原画与道具图标

Z-Image-GGUF助力游戏开发&#xff1a;快速生成概念原画与道具图标 做游戏&#xff0c;最让人头疼的环节之一&#xff0c;可能就是美术资源了。尤其是项目初期&#xff0c;策划脑子里天马行空的想法&#xff0c;要变成一张张看得见摸得着的概念图、道具图标&#xff0c;这个过…...

如何快速上手 Ever Gauzy:企业级开源管理平台完整指南

如何快速上手 Ever Gauzy&#xff1a;企业级开源管理平台完整指南 【免费下载链接】ever-gauzy Ever Gauzy™ - Open Business Management Platform (ERP/CRM/HRM/ATS/PM) - https://gauzy.co 项目地址: https://gitcode.com/gh_mirrors/ev/ever-gauzy 想象一下&#xf…...