Android 下拉栏中的禁用摄像头和麦克风隐藏

Android 下拉栏中的禁用摄像头和麦克风隐藏

文章目录

  • Android 下拉栏中的禁用摄像头和麦克风隐藏
    • 一、前言
    • 二、下拉框中的禁用摄像头和麦克风隐藏实现
      • 1、设置支持属性为false
      • 2、修改代码
    • 三、其他
      • 1、下拉栏中的禁用摄像头和麦克风隐藏小结
      • 2、 Android SensorPrivacyService
  • ps: 成功最重要的原因是明确的目标、不懈的努力与适应变化的能力三者相结合。

一、前言

Android下拉栏中有摄像头和麦克风禁用功能;

但是点击禁用后会有些bug,比方多视窗异常,信源声音异常等问题;

所以目前做法是直接隐藏掉禁用功能,算是规避手段了,

出现问题就不问题删除,哈哈,当然如果有能力和时间去解决这个问题是更好的;

市场上大部分手机上应该是解决了这些问题的,也可能是在某些场景进行了优化;

我这里开发的是大屏设备,没有手机那么多顾虑和要求所以隐藏UI是目前最好的做法。

如果你也有隐藏下拉栏UI或者简单修改下拉框UI的需要可以看看本文。

Android 系统下拉栏的主要代码的目录:

frameworks/base/packages/SystemUI/src/com/android/systemui/statusbar

StatusBar.java 是状态栏和下拉通知栏的核心类,负责管理通知栏的显示、隐藏、滑动等逻辑;

NotificationPanelView.java 用于处理通知栏的布局和绘制等。

本文不涉及复杂逻辑的修改,只是隐藏图标,并且系统中大部分图标都是有res属性可以控制是否隐藏的;

但是3588 Android15 中设置这个属性未生效,后面在代码中直接进行了修改。

二、下拉框中的禁用摄像头和麦克风隐藏实现

1、设置支持属性为false

+++ frameworks/base/core/res/res/values/config.xml
@@ -127,9 +127,9 @@<bool name="config_supportPreRebootSecurityLogs">true</bool><!-- Whether this device is supporting the software microphone toggle -->
-    <bool name="config_supportsMicToggle">true</bool>
+    <bool name="config_supportsMicToggle">false</bool><!-- Whether this device is supporting the camera toggle -->
-    <bool name="config_supportsCamToggle">true</bool>
+    <bool name="config_supportsCamToggle">false</bool>

正常情况修改framework 中的config属性为false就行了;

但是也有些系统方案存在overlay覆盖的情况;一般是vendor 或者device 目录会有

比如RK3588 中的overlay目录:

device/rockchip/common/overlay/frameworks/base/core/res/res/values/config.xml

之前在Android13 的这个目录修改是生效的,但是在Android15 上修改就不行了;

搜索整个源码目录的 config_supportsMicToggle 关键字,能修改的几个都修改了,也是没有起作用;

所以需要看看代码是哪里获取的尝试确认并修改。

2、修改代码

frameworks/base/services/core/java/com/android/server/sensorprivacy/SensorPrivacyService.java
@@ -1289,13 +1289,16 
@@ public final class SensorPrivacyService extends SystemService {@Overridepublic boolean supportsSensorToggle(int toggleType, int sensor) {
+            //change by skg
+            Log.d(TAG,"lwz supportsSensorToggle toggleType = " + toggleType + ", sensor = " + sensor);
+
+            Log.d(TAG,"lwz supportsSensorToggle config_supportsMicToggle = " + mContext.getResources().getBoolean(R.bool.config_supportsMicToggle) +
+            ", config_supportsCamToggle = " + mContext.getResources().getBoolean(R.bool.config_supportsCamToggle));if (toggleType == TOGGLE_TYPE_SOFTWARE) {if (sensor == MICROPHONE) {
-                    return mContext.getResources().getBoolean(R.bool.config_supportsMicToggle);
+                    return false;//mContext.getResources().getBoolean(R.bool.config_supportsMicToggle);} else if (sensor == CAMERA) {
-                    return mContext.getResources().getBoolean(R.bool.config_supportsCamToggle);
+                    return false;//mContext.getResources().getBoolean(R.bool.config_supportsCamToggle);}} else if (toggleType == TOGGLE_TYPE_HARDWARE) {if (sensor == MICROPHONE) {

从代码看可以看到是否支持确实是从res属性中进行获取和判断;

上面强制返回了false,表示不支持;

并且从打印日志查看,虽然res属性设置了false,但是打印的日志还是获取到显示true;

难道存在有打包的gms overlayapk会进行属性覆盖?暂时不确定。

三、其他

1、下拉栏中的禁用摄像头和麦克风隐藏小结

正常情况设置framework config属性就行:

<bool name="config_supportsMicToggle">false</bool>
<bool name="config_supportsCamToggle">false</bool>

也有可能存在overlay的情况,需要修overlay的属性。

如果修改config资源无效,可以尝试修改Java文件:

frameworks/base/services/core/java/com/android/server/sensorprivacy/SensorPrivacyService.javapublic boolean supportsSensorToggle(int toggleType, int sensor) {return false;}

SensorPrivacyService 只控制隐私的摄像头和麦克风,下拉栏的其他属性不在这里控制。

2、 Android SensorPrivacyService

Android SensorPrivacyService 是 Android 系统中负责传感器隐私管理的服务,其主要作用如下:

**保护用户隐私**:它通过限制应用对传感器数据的访问,来防止应用在用户不知情的情况下获取敏感信息,从而保护用户的隐私。
例如,在用户未授权时,阻止应用访问位置传感器、摄像头、麦克风等传感器,避免位置信息、图像、语音等数据被泄露。

简单的说SensorPrivacyService 就是一个系统服务,开机回初始化,会控制和监听摄像头和麦克风的是否使用授权;

这个SensorPrivacyService的代码不多只有一千多行;里面还有两个Settings属性的监听:

Settings.Secure.DEFAULT_INPUT_METHOD 在 Android 系统的输入法管理中起着关键的作用,它是连接用户设置、系统输入法切换以及应用与输入法交互的重要纽带。Settings.Global.RECEIVE_EXPLICIT_USER_INTERACTION_AUDIO_ENABLED 是 Android 系统设置中的一个全局属性,用于控制是否允许应用在接收到明确的用户交互后播放音频。

ps: 成功最重要的原因是明确的目标、不懈的努力与适应变化的能力三者相结合。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/web/76844.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

数字后端设计 (四):时钟树综合——让芯片的「心跳」同步到每个角落

—— 试想全城的人要在同一秒按下开关——如果有的表快、有的表慢&#xff0c;结果会乱套&#xff01;时钟树综合就是给芯片内部装一套精准的“广播对时系统”&#xff0c;让所有电路踩着同一个节拍工作。 1. 为什么时钟如此重要&#xff1f; 芯片的「心跳」&#xff1a;时钟信…

华为网路设备学习-19 路由策略

一、 二、 注意&#xff1a; 当该节点匹配模式为permit下时&#xff0c;参考if else 当该节点匹配模式为deny下时&#xff1a; 1、该节点中的apply子语句不会执行。 2、如果满足所有判断&#xff08;if-match&#xff09;条件时&#xff0c;拒绝该节点并跳出&#xff08;即不…

机器学习决策树

一、何为决策树 决策树&#xff08;Decision Tree&#xff09;是一种分类和回归方法&#xff0c;是基于各种情况发生的所需条件构成决策树&#xff0c;以实现期望最大化的一种图解法。由于这种决策分支画成图形很像一棵树的枝干&#xff0c;故称决策树。它的运行机制非常通俗易…

香港服务器CPU对比:Intel E3与E5系列核心区别与使用场景

香港服务器的 CPU 配置(核心数与主频)直接决定了其并发处理能力和数据运算效率&#xff0c;例如高频多核处理器可显著提升多线程任务响应速度。在实际业务场景中&#xff0c;不同负载需求对 CPU 架构的要求存在显著差异——以 Intel E3 和 E5 系列为例&#xff0c;由于两者在性…

【Rust 精进之路之第8篇-工具赋能】深入 Cargo:依赖管理、构建配置与工作空间 (Workspace)

系列: Rust 精进之路:构建可靠、高效软件的底层逻辑 作者: 码觉客 发布日期: 2025-04-20 引言:超越构建,Cargo 是 Rust 生态的引擎 在我们的 Rust 学习之旅初期(第二篇),我们已经与 Cargo 有过初步的接触。我们学会了使用 cargo new 创建项目骨架,用 cargo build 编…

#systemverilog# 进程控制问题#(八)关于#0 问题的使用(三)

今天,我们继续研究一下上一节讨论的问题。其实,还有一个小问题,我们来探讨一下。 `timescale 1ns/10psmodule tb_top(); reg clk; reg reset;initial begin reset = 0; #10 reset = 1; #15 reset = 0; #50 $finish; endinitial beginfor(int i = 0; i < 4 ; i++)fork #…

Linux:简单自定义shell

1.实现原理 考虑下⾯这个与shell典型的互动&#xff1a; [rootlocalhost epoll]# ls client.cpp readme.md server.cpp utility.h [rootlocalhost epoll]# ps PID TTY TIME CMD 3451 pts/0 00:00:00 bash 3514 pts/0 00:00:00 ps ⽤下图的时间轴来表⽰事件的发⽣次序。其中时…

PLSQL语法入门--PL/SQL 基础详解

PL/SQL 基础详解 PL/SQL&#xff08;Procedural Language for SQL&#xff09;是 Oracle 数据库中的一种过程式语言&#xff0c;它扩展了 SQL 的功能&#xff0c;允许开发者编写复杂的程序逻辑。 一、匿名块 解释 匿名块是 PL/SQL 的基本执行单位&#xff0c;它是一段独立的…

Oracle--用户管理

前言&#xff1a;本博客仅作记录学习使用&#xff0c;部分图片出自网络&#xff0c;如有侵犯您的权益&#xff0c;请联系删除 用户管理在 Oracle 数据库中至关重要。一个服务器通常只运行一个 Oracle 实例&#xff0c;而一个 Oracle 用户代表一个用户群&#xff0c;他们通过该用…

UOS+N 卡 + CUDA 环境下 X86 架构 DeepSeek 基于 vLLM 部署与 Dify 平台搭建指南

一、文档说明 本文档是一份关于 DeepSeek 在X86架构下通vLLM工具部署的操作指南&#xff0c;主要面向需要在UOSN卡CUDA环境中部署DeepSeek的技术人员&#xff0c;旨在指导文档使用者完成从 Python 环境升级、vLLM 库安装、模型部署到 Dify 平台搭建的全流程操作。 二、安装Pyt…

操作系统之shell实现(下)

&#x1f31f; 各位看官好&#xff0c;我是maomi_9526&#xff01; &#x1f30d; 种一棵树最好是十年前&#xff0c;其次是现在&#xff01; &#x1f680; 今天来学习C语言的相关知识。 &#x1f44d; 如果觉得这篇文章有帮助&#xff0c;欢迎您一键三连&#xff0c;分享给更…

Spark,流量统计案例

提前创好一个文件夹分为四个类 FlowBean中的代码内容为&#xff1a;package org.example.flow; import org.apache.hadoop.io.Writable; import java.io.DataInput; import java.io.DataOutput; import java.io.IOException; //hadoop 序列化 //三个属性&#xff1a;手机…

下载油管视频 - yt-dlp

文章目录 1. yt-dlp与you-get介绍1.1 主要功能对比1.2 使用场景1.3 安装 2. 基本命令介绍2.1 默认下载视频2.2 指定画质和格式规则2.3 下载播放列表2.4 备注 3. 参考资料 之前只使用you-get下载b站视频&#xff0c;当时了解you-get也可下载油管视频&#xff0c;但之前无此需求&…

基于javaweb的SSM+Maven教材管理系统设计与实现(源码+文档+部署讲解)

技术范围&#xff1a;SpringBoot、Vue、SSM、HLMT、Jsp、PHP、Nodejs、Python、爬虫、数据可视化、小程序、安卓app、大数据、物联网、机器学习等设计与开发。 主要内容&#xff1a;免费功能设计、开题报告、任务书、中期检查PPT、系统功能实现、代码编写、论文编写和辅导、论文…

VS2022+QT环境配置及基本操作

参考文章 2025最新&#xff01;Visual Studio 2022 QT6.7 环境配置全攻略&#xff1a;一键搞定安装与乱码问题&#xff0c;开发效率翻倍&#xff01;&#xff08;全网最详细教程&#xff0c;手把手教你搭建完美开发环境&#xff01;&#xff09;_vs2022 qt-CSDN博客 下载QT …

使用percona-toolkit同步mysql表数据

背景 做了主备mysql的配置以后&#xff0c;可能因为切换过程造成不一致的情况&#xff0c;这个时候可以处理的方式是全量导入再导出&#xff0c;这个有个问题就是操作的数据太多了 我们只需要数据补全同步即可 mysql的同步是基于binlog的&#xff0c;如果没有记录的部分的数据…

MDG 实现后端主数据变更后快照自动刷新的相关设置

文章目录 前言实现过程BGRFC期初配置&#xff08;可选&#xff09;设置 MDG快照 BGRFC维护BP出站功能模块 监控 前言 众所周知&#xff0c;在MDG变更请求创建的同时&#xff0c;所有reuse模型实体对应的快照snapshot数据都会记录下来。随后在CR中&#xff0c;用户可以修改这些…

重装系统 之 Dell戴尔服务器 PowerEdge R750xs + window server2012r2 || 2016

因要求需要给新服务器装个 win server2012或者2016系统 XXX使用U盘制作PE系统U盘安装系统不行&#xff0c;适合普通win8&#xff0c;win10&#xff0c;win11U盘制作PE系统U盘安装win10系统教程U盘制作PE系统U盘安装win10系统教程https://mp.weixin.qq.com/s/t0W8aNJaHPAU8T78nh…

基于Spring Security 6的OAuth2 系列之二十六 - 终章

之所以想写这一系列&#xff0c;是因为之前工作过程中使用Spring Security OAuth2搭建了网关和授权服务器&#xff0c;但当时基于spring-boot 2.3.x&#xff0c;其默认的Spring Security是5.3.x。之后新项目升级到了spring-boot 3.3.0&#xff0c;结果一看Spring Security也升级…

一键配置多用户VNC远程桌面:自动化脚本详解

在当今远程工作盛行的时代,高效且安全地管理多用户远程桌面访问变得至关重要。本文将介绍一个强大的自动化脚本,该脚本能够快速创建用户并配置VNC远程桌面环境,大大简化了系统管理员的工作。 一、背景介绍 在Linux系统中,手动配置VNC服务器通常需要执行多个步骤,包括创建…