- 博客(64)
- 资源 (5)
- 收藏
- 关注
原创 About StatusBarManagerService/StatusBarManager
StatusBarManagerService,负责管理SystemUI模块的大部分系统栏组件,比如状态栏、导航栏、最近任务等.下面系统提供的一些方法,但是隐藏的(@hide),系统应用可以使用.如果三方应用,可以通过反射使用.其它模块想要和SystemUI模块交互,也是通过它.
2024-08-31 17:30:34 277
原创 Android 11 About SleepToken / (Settings)Screen timeout
Android R 激活Settings里面的息屏休眠, 最前台运行的Activity生命周期 ->onPause->onStop。
2024-08-30 15:41:53 456
原创 Launcher start App WINDOWING_MODE_FREEFORM
需要在startActivity时候携带相关相关参数,把windowmode和launchBounds进行设置。这个windowmode需要从FullScreen —> Freeform,如果发现修改无效,检查是否打开系统的自由窗口模式。
2024-08-28 18:00:44 416
原创 Android T adout replace bootanimation
Android Q(10)开始引进动态分区,分区的大小不好确定.可以去配置文件固定分区大小(不让其动态),或者弄一个文件占位.bug:Android T bootanimation 时间过长(>50s),会触发bug,现象为System UI ANR.idea_2:创建一个新的分区,(用于存放bootanimation.zip)可以让上层读写.前提条件:userdebug版本, 默认关闭selLinux,可root。找到一个可以被命令操作的分区,然后复制动画.(希望大神能指导,给个bug解决思路)
2024-08-23 16:01:50 329
原创 Android 关于设备定屏/黑屏/冻屏/ANR那些事
再去上报至WMS进行窗口状态的切换,避免主Surface绘制完成上报至WMS后、同时SurfaceView迟迟没有绘制完成使得startingWindow过早移除从而产生黑屏的现象.主要作用为提供ViewRootImpl与SurfaceView(假如窗口存在SurfaceView的情况下)同步服务,实现在主Surface与SurfaceView均完成绘制时,现象分析:桌面的状态时黑屏的,但是SystemUI的statusBar是显示和功能都是正常的,那一般就是当前app的问题了.
2024-08-23 14:59:10 1360
原创 Android T don‘t abort background activity starts
【代码】Android T don‘t abort background activity starts。
2024-08-20 18:57:58 186
原创 Android about event log
EventLogTags.logtags,它是个日志工具,很多模块有该文件.event log 在framework层常常使用,通过类似EventLog.writeEvent()写log,这种log被保存在/system/etc/event-log-tags.
2024-08-20 15:35:41 436
原创 Android 13 about launcher3 (1)
桌面设置页面:桌面空白处长按,进入home settings,有个allow home screen rotation就是旋转开关,手机模式默认是关闭的,平板模式这个偏好隐藏了.case 1: 单独使用role,确实不需要删除旧Launcher栈,唯一需要注意点的是要在Launcher启动之前,把。Android 12之后,Launcher3有两个模式,一个是平板,另一个是手机.所以需要在framework里某个必经之路上做文章…手机模式:桌面默认是不可以旋转的.
2024-08-17 16:33:44 499
原创 Android T about screen rotation(二)
需求:客户因为模具问题,屏幕方向需要动态的变动.(方向: 0 , 90 , 180 ,270)拆分:设备开机过程中图像显示可分为三个阶段,boot logo(1)->kernel logo(2),这一段的处理需要驱动层,所以暂时忽略.开机动画 Bootanimation(3)阶段 和 Home Launcher应用显示(4)阶段是需要修改的.因为是动态的,有涉及到cpp部分,一般用系统属性保存:persist.customer.set.orientation=0。
2024-08-16 16:21:10 559
原创 Android T 关于屏幕旋转 (一)
(T to 13)利用上面的函数,成功旋转了屏幕,可能遇到的第一个问题:按home键回到Launcher3,旋转的屏幕会被还原.请看这一篇文章.第二个问题:关机重启后,旋转的屏幕被还原.分析思路:在设备开机的过程中不断用读取它的值,发现设备显示FallBackHomey引导界面时,它的值被改为0.那么明显就是系统中有某个部分改了user_rotation的值,思考是谁改动了它?(经验之谈)一般设备开机就是启动的部分有:Launcher3,SystemUI,frameworks各种服务,其它排除法:1
2024-08-16 10:11:34 424
原创 Android T(13) The app is granted permissions by default
对比Android11,文件夹下,多了个有一部分关于权限的处理,移到了这个文件中.比如:restorePermissionState(…)
2024-08-15 19:46:10 421
原创 Anrdoir 13 关于设置静态IP后,突然断电,在上电开机卡动画
方案2:保存用户的静态参数,直接删除,rm -rf /data/misc/apexdata/com.android.tethering/misc/ethernet/ipconfig.txt,然后利用开机广播在设置一次静态IP。ipconfig.txt异常是系统对文件缓存引起.因为设置静态IP时,会创建ipconfig.txt,当(30s之内)突然掉电的时候,文件内容还没有完全刷到文件中!bug描述:设置静态IP成功后,机器突然断电,然后在上电开机,发现机器一直卡在开机动画,无法成功进入桌面。
2024-08-14 18:55:58 802
原创 Android 13 移植EthernetSettings/Ethernet更新
为什么这么确认我导入,因为还引用了SystemProperties.getInt().然后控制变量,定位到问题是SystemProperties.set()无法再这个目录使用.应该先去想还有什么其它的方式可能调用SystemProperties.set(),先达成目的,然后再回来想想那个编译报错.)既然(正常)固定的调用方式编译报错,然后一时半会又搞不定编译报错(难点:报错信息不够明确,无法定位).然后去询问大佬,大佬提供一个思路,让我用反射去调用它,确实编译通过了,数据也能保存.,但是我明明导入了!
2024-08-09 17:57:29 782
原创 Android13 关于SystemUI更新/Nav Bar add volume button&&other button
对比Android 11, Android 13的SystemUI的源码文件目录,部分文件位置移动了或者删除了,其它的做出了很多改变,变的更加清晰、模块化…代码里面注解用的频繁了. Dragger2是一个依赖注入框架,在编译期间自动生成代码,负责依赖对象的创建.
2024-08-09 16:44:18 526
原创 Android13 关于SystemUI更新/Nav Bar add volume button&&other button
Android13系统导航栏添加音量加减键按钮功能](https://blog.csdn.net/wzh048503/article/details/140020452)[Android导航栏音量调节](https://blog.csdn.net/qq_27636049/article/details/103632949)[NavigationBar详解](https://juejin.cn/post/7223216421199315000)//要变成减音量,keyCode="25",其余不变;
2024-08-09 16:43:06 871
原创 Android11 关于三方应用获取su权限
SELinux,全称Security-Enhanced Linux,是一种基于Linux内核的安全机制。它通过强制访问控制(MAC)来增强Linux系统的安全性,如果不禁用SELinux,完成下面的修改可能会导致设备进入Recovery界面!adb shell getenforce 为Permissive(宽容模式),查看报错日志,发现是客户apk想使用su命令提权,但是没有权限!对于保护系统资源和防止未经授权访问非常有帮助!系统这边做修改,让su权限下放到三方应用.客户的apk运行报错。
2024-08-08 11:50:10 846
原创 Android R Settings关于屏保/PowerManagerService欺骗系统不让其进入休眠状态
思路1:不让系统进入后面两个状态,保持在SCREEN_DREAM,然后发送广播,操作屏幕背光—>我把它叫做假休眠(fake_sleep_mode)android 系统休眠过程四个状态,分别是SCREEN_BRIGHT,SCREEN_DIM,SCREEN_DREAM,SLEEP。(或者保持在SCREEN_DREAM后,拉起一个服务,在界面上添加一个的window,window上面布局随意,点击之后移除)Android 系统全局监听touch事件,在背光关闭的情况下.
2024-08-05 11:20:09 337
原创 Android 11 关于按键拦截/按键事件处理分享
系统在处理按键事件,不管是物理按键还是SystemUI的nav_bar上的虚拟按键(使用了KeyEvent类中的,比如:KeyEvent.KEYCODE_VOLUME_UP).主要注意的有两个函数:interceptKeyBeforeDispatching 分发之前拦截事件interceptKeyBeforeQueueing 加入队列之前拦截事件。
2024-08-02 17:42:47 548
原创 Android -- 实现应用的禁止
这个方法的作用是启用或者禁用四大组件,比如我们想禁用一个服务,就可以使用下面的方法,传入的参数就是服务的名称。PackageManager提供了一个方法,setComponentEnabledSetting(),App使用上述方法需要权限和android.uid.system,让APP运行在 system 进程。
2024-07-31 10:35:26 539
原创 Android 11 关于app的权限重置
Android 11 Google针对权限系统又加了更多的限制,比如1.权限的单次授权;2.某个app长时间不使用,权限会被自动更新/重置!最先是要找到你需要操作的权限是啥,可以在AppOpsManager的数组里面查询!Settings里面关于app权限重置的switch 流程。方案二:系统服务拦截。
2024-07-30 15:34:41 290
原创 Android 系统适配无源码app
2.Launcher3层面修改,在Launcher3层面修改界面上面显示的icon被修改了,setting和系统安装应用界面等还是原来的图。可以看到View的添加是要在执行完onResume()之后的,所以我们调整某个应用的字体大小和UI显示最好是在它之前。如果是从其他activity回到当前activity而执行的onResume方法,那么就能够获取到View的宽高。如果是activity 启动后第一次进入onResume 生命周期,那么获取到的View的宽高是错误的;
2024-07-26 17:21:49 438
原创 Android 13 大屏显示时关于SystemUI和Launcher3问题
当系统运行在大屏上时,原来显示SystemUI导航栏的位置会变成Launcher3的任务栏,然后导航栏的3个按键显示靠右下角显示。2.找到Launcher3显示任务栏的部分,也做类似的修改不让任务栏显示。1.先看SystemUI的导航栏为什么会消失,移动。
2024-07-24 10:59:00 493
原创 Anroid 11 关于NotificationManager && NotificationManagerService
【代码】Anroid 11 关于NotificationManager && NotificationManagerService。
2024-07-20 14:41:15 206
原创 Android 11 NavigationBar && Status Bar 如果改变背景颜色
SystemUI的导航栏和状态栏的背景是大部分是根据当前应用的主题显示的,状态有 黑,白,透明,半透明等.需求:要求背景不跟随栈顶应用主题变化,始终固定成一个颜色!
2024-07-18 10:36:59 425
原创 Android 11 UsbDebug 关于adb RSA 认证
注意:Google 现在强制要求在USER 版本中开启adb RSA 指纹认证,如果关闭,将无法通过Google CTS 测试。user版本时默认打开adb RSA指纹密钥的 ,就是那个连接adb的时候弹出一个dialog让你确认的界面!eng和userdebug 版本中关闭了adb RSA 指纹密钥认证.
2024-07-16 19:04:19 422
原创 个人头像-----资源
动漫头像https://waifulabs.com/notion头像https://notion-avatar.vercel.app/zh
2021-09-29 13:47:27 374
原创 Android.mk 小结 和 手机分区 && 开机动画
# Module name should match apk name to be installedLOCAL_MODULE := MusicLOCAL_MODULE_TAGS := optionalLOCAL_SRC_FILES := $(LOCAL_MODULE).apkLOCAL_MODULE_CLASS := APPSLOCAL_MODULE_SUFFIX := $(COMMON_ANDROID_PACKAGE_SUFFIX)LOCAL_CERTIFICATE := PRESIGNED
2021-09-24 16:26:38 440
原创 android系统&&adb命令
动态换肤实现思路-网易云adb命令adb push命令格式: adb push file devicepath说明: 把文件file推送到devicepath目录下 , file代表 要推送的文件及文件路径 devicepath代表系统的具体目录例如: adb push d:\luchang_65\ui1\Launcher.apk system/app/Launcher/ // 把文件Launcher.apk 推送到车机 system/app/Launcher/
2021-08-20 17:42:26 428
原创 shell命令基础+adb.md
语言类:《深度探索C++对象模型》,对应的英文版是《Inside C+++ Object Model》程序编译、链接、加载类:《链接器和加载器》,对应的英文版是《Linker and Loader》《程序员的自我修养:链接、装载和库》操作系统类:《Linux内核设计与实现》,对应的英文版是《Linux Kernel Development》《深入理解Linux内核》,对应的英文版是《Understanding the Linux Kernel》《深入Linux内核架构》,对应的英文版是《Pr
2021-08-20 17:41:06 4114
原创 java - io流拷贝文件
package com.example.tmedia;import androidx.appcompat.app.AppCompatActivity;import android.Manifest;import android.app.Activity;import android.content.pm.PackageManager;import android.os.Build;import android.os.Bundle;import android.os.Environment;
2021-08-17 19:59:37 196
原创 数组转换成List---Java
/*数组转list-1*/ private void testArrayCastToListError(){ String [] strArray = new String[2]; List list = Arrays.asList(strArray); //转换后,插入数据 list.add(1); Log.d("tww",list+""); /* Caused by: java.lang.Unsu.
2021-08-11 11:11:56 110
原创 Android自定义控件-流式布局简单版
主要代码:FlowLayoutView.javapackage com.example.vitomvp.ui;import android.content.Context;import android.util.AttributeSet;import android.util.Log;import android.view.View;import android.view.ViewGroup;import java.util.ArrayList;import java.util.Li
2021-08-10 19:57:48 210
原创 关于TextView文字基线问题
package com.example.vitomvp.ui;import android.content.Context;import android.graphics.Canvas;import android.graphics.Color;import android.graphics.Paint;import android.graphics.RectF;import android.util.AttributeSet;import android.util.Log;import
2021-08-10 17:51:30 363
原创 2021-08-09-shell脚本基础命令
语言类:《深度探索C++对象模型》,对应的英文版是《Inside C+++ Object Model》程序编译、链接、加载类:《链接器和加载器》,对应的英文版是《Linker and Loader》《程序员的自我修养:链接、装载和库》操作系统类:《Linux内核设计与实现》,对应的英文版是《Linux Kernel Development》《深入理解Linux内核》,对应的英文版是《Understanding the Linux Kernel》《深入Linux内核架构》,对应的英文版是《Pr
2021-08-09 09:49:01 305
原创 java中getBytes()方法的使用
//字符串转byte 发送 Big Endian(4E25) Little Endian(254E)/*Unicode规范中定义, 每一个文件的最前面分别加入一个表示编码顺序的字符, 这个字符的名字叫做"零宽度非换行空格"(ZERO WIDTH NO-BREAK SPACE), 用FEFF表示. 这正好是两个字节, 而且FF比FE大1.UNICODE 是一种字符集,在 Java 中直接使用 Unicode 转码时会按照 UTF-16LE 的方式拆分,由于 UTF-16 分为 UTF-16LE.
2021-08-04 19:52:01 1666
TransitionDemo.rar
2021-04-28
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人