默认开启“停用HW叠加层”开关,强制GPU渲染
Android开发者模式的选项中有一项叫“停用HW叠加层”,这个选项使能之后,系统所有的UI合成都会全部强制GPU去完成,HWC不再参与合成,需求来源就是默认要使能该功能,即禁用HW叠加,具体实现如下:
diff --git a/src/com/android/settings/FallbackHome.java b/src/com/android/settings/FallbackHome.java
index e3944a65c6..5e7e0cae59 100644
--- a/src/com/android/settings/FallbackHome.java
+++ b/src/com/android/settings/FallbackHome.java
@@ -17,6 +17,7 @@package com.android.settings;import android.app.Activity;
+import android.app.AppGlobals;import android.app.WallpaperColors;import android.app.WallpaperManager;import android.app.WallpaperManager.OnColorsChangedListener;
@@ -25,7 +26,12 @@ import android.content.Context;import android.content.Intent;import android.content.IntentFilter;import android.content.pm.ResolveInfo;
+import android.content.pm.IPackageManager;import android.os.AsyncTask;
+import android.os.IBinder;
+import android.os.Parcel;
+import android.os.RemoteException;
+import android.os.ServiceManager;import android.os.Bundle;import android.os.Handler;import android.os.Message;
@@ -48,6 +54,13 @@ public class FallbackHome extends Activity {private boolean mProvisioned;private WallpaperManager mWallManager;+ private static final int SETTING_VALUE_ON = 1;
+ private static final String SURFACE_FLINGER_SERVICE_KEY = "SurfaceFlinger";
+ private static final String SURFACE_COMPOSER_INTERFACE_KEY = "android.ui.ISurfaceComposer";
+ private static final int SURFACE_FLINGER_DISABLE_OVERLAYS_CODE = 1008;
+
+ private static IBinder mSurfaceFlinger;
+private final Runnable mProgressTimeoutRunnable = () -> {View v = getLayoutInflater().inflate(R.layout.fallback_home_finishing_boot, null /* root */);
@@ -100,10 +113,36 @@ public class FallbackHome extends Activity {}getWindow().getDecorView().setSystemUiVisibility(flags);+ if (mSurfaceFlinger == null) {
+ mSurfaceFlinger = ServiceManager.getService(SURFACE_FLINGER_SERVICE_KEY);
+ }
+
+ initHardwareOverlaysSetting(SETTING_VALUE_ON);
+registerReceiver(mReceiver, new IntentFilter(Intent.ACTION_USER_UNLOCKED));maybeFinish();}+ public void initHardwareOverlaysSetting(int val) {
+ if (mSurfaceFlinger == null) {
+ return;
+ }
+
+ IPackageManager pm = AppGlobals.getPackageManager();
+ // magic communication with surface flinger.
+ try {
+ if (pm.isFirstBoot()) {
+ final Parcel data = Parcel.obtain();
+ data.writeInterfaceToken(SURFACE_COMPOSER_INTERFACE_KEY);
+ data.writeInt(val);
+ mSurfaceFlinger.transact(SURFACE_FLINGER_DISABLE_OVERLAYS_CODE, data, null, 0 /* flags */);
+ data.recycle();
+ }
+ } catch (RemoteException ex) {
+ // intentional no-op
+ }
+ }
+@Overrideprotected void onResume() {super.onResume();
因为开机默认状态,不会加载开发者模式的页面,因此在开发者模式的控制类是无法修改默认的,只能在开机必走的阶段执行使能,这里我选择的是FallbackHome这个类,每次在launcher启动之前都会调用这里,故选择该类。
编译验证,刷机即可发现在开发者选项中,该项值已经默认打开了。
默认开启“停用HW叠加层”开关,强制GPU渲染相关推荐
- android7 强制gpu渲染,安卓手机开启强制GPU渲染功能的方法
安卓手机怎么开启强制GPU渲染功能?安卓手机是目前市场占有率最多的智能手机系统,但是当用户使用搭载有安卓系统的手机后,我们就会发现随着使用时间的增加,手机速度就会变得越来越慢,其实这是安卓系统手机的通 ...
- hw叠加层开还是不开_HW叠加层是什么?
拓扑叠加分析 本词条缺少名片图,补充相关内容使词条更完整,还能快速升级,赶紧来编辑吧! 拓扑会加分析是把分散在不同层上的空间属性信息按相同的空间位置加到一起合为新的一层,该层的属性由被叠加层各自的属性 ...
- 开启xmp1还是2_玩机鸭x:手机开启“强制进行GPU渲染”功能对手机有什么影响?...
安卓手机从4.0版本开始,开发人员在选项中加设了"强制进行GPU渲染"功能.那么开启强制进行GPU渲染功能有什么样的好处.或者什么样的坏处呢? GPU对于手机的作用是什么? 手机中 ...
- 改变默认字体大小和默认显示大小。默认开启电量百分比 。 漫游开关默认状态显示为开启,手机数据默认状态。流量节省(Data saver)默认状态
vendor/mediatek/proprietary/packages/apps/SettingsProvider/ src/com/android/providers/settings/Datab ...
- Google Map apiv3叠加层
叠加层概述 叠加层是地图上与纬度/经度坐标绑定的对象,会随您拖动或缩放地图而移动.叠加层表示的是"添加"到地图中以标明点.线.区域或对象集合的对象. Maps API 包含以下几种 ...
- 开机默认usb debug 调试,且不弹窗自动确认选择。默认开启开发者模式(不是仅仅开启开发者菜单)。
总结下这个默认开启开发者模式问题就是, Settings.Global.putInt(getContentResolver(), Settings.Global.DEVELOPMENT_SETTING ...
- Android 11.0 12.0系统默认开启wifi
1.概述 在11.0 12.0的系统中产品开发中,系统的wifi功能是默认关闭的,由于项目需要要求默认打开wifi,开机后直接连wifi就可以了 所以需要找到系统默认的关闭wifi的地方 打开wifi ...
- Google maps javascript api v3 叠加层(Overlays)介绍
很多人尝试google maps api的开发,通常会涉及到在Google maps上进行标注功能的开发.Helloj2ee学习一项技术通常不在看书,而是多以帮助为主.当我看完之后,我将Overlay ...
- Google Maps JavaScript API V3 叠加层
注意:以下网页中提到的 Google Maps JavaScript API 第 3 版现在是正式的 JavaScript API 版本.该 API 的第 2 版已根据我们的弃用政策正式弃用.欢迎您将 ...
最新文章
- “_snprintf”: 不是“std”的成员
- ALV标准范例Demo汇总
- directly to phd is good for laying a solid foundation for future career
- “易+”开源 | 网易会议开源之移动端篇
- boost::hana::make_lazy用法的测试程序
- 操作系统(五)输入/输出(I/O)管理
- WEB安全基础-命令注入
- (转)编码剖析Spring管理Bean的原理
- ln 创建软链接硬链接命令
- css中正确设置微软雅黑字体
- 谷歌浏览器离线更换皮肤-安装谷歌浏览器插件与问题解决
- 如何删除QQ中的锁定QQ热键Ctrl+Alt+L?
- [No0000158]思维模型1-20
- 沙普利算法的java实现_盖尔-沙普利算法告诉你,你的对象在哪里?
- Matplotlib颜色、线宽、线型、透明度、点型
- 关于电子产品克隆,PCB抄板与芯片解密缺一不可!
- 在Servlet之前的CGI是个什么东西
- 管理经济学学习之初探
- 2018.9.1-2021.10.25工作总结和人生规划
- 网盘文件管理系统——java实现