- 博客(18)
- 收藏
- 关注
原创 android14的电池图标的修改
现在给图个进行了加粗,充电图标也进行了修改,这里主要就是在之前的基础上改一下矢量图的路径,这个狠让人头疼,加了这些之后主要就是修改一下绘制时候的逻辑和充电图标的显示。这个文件的作用主要是用来让充电图标显示到电量后面,之后主要用来显示电池图标的是一个新增的类。上次在13修改了一点修改成。,感觉不太美观,之后又进行了完善。我这里直接放上电池图标的路径。
2024-11-27 20:01:08
487
4
原创 android13 状态栏的电池电量图标的修改
我们看下ThemedBatteryDrawable就是图标的形状 可以在这里改自己想要的效果。之后我们就看到了电量显示,这个类是BatteryMeterView。这就是状态栏的显示,期中system_icons用来显示系统图标。首先我们先找到显示电量图标的地方。android原生的图标是。
2024-11-05 20:06:49
526
原创 android13 状态栏的图标定制
添加了这个后发现可以正常显示了,还存在个bug就是首次开机可能存在图标显示不正常问题,所以我们使用全局变量来设置一个值开机来检测来确保可以正常显示。首先我们要先找到显示图标的类,通过观察我们找到了PhoneStatusBarPolicy这个类是用来显示图标的,在开始时会调用init方法。接着我们就看发现callback并没有被调用到这里无法正确显示图标,我们的qs里的类实现的是。这里图标就修改成功了,但是我们发现点击qs里的按钮来禁用后并无法正常显示图标。客户需要修改摄像头权限和语音权限的图标的ui显示,
2024-11-05 19:52:45
551
原创 android11 app使用Window覆盖系统亮度的流程浅析
在亮度调节时,如果超出范围,会赋值为PowerManager.BRIGHTNESS_INVALID_FLOAT,会不生效,默认会和屏幕亮度相同。这个方法对传来的值进行了判断,对不符合标准的赋值为PowerManager.BRIGHTNESS_INVALID_FLOAT。调用了这个方法 接着就找到了PowerManagerService.java这个类。调用了mCallback,这个类里的Callback是个抽象类。这里执行了performTraversal这个方法执行了。在这里的方法的实现显示。
2024-10-30 11:54:00
185
1
原创 Android7.1 hal层代码书写
方法实现主要是通过ioctl实现的,还要记得这个so库单编会在,整编不会存在,需要把他加入到编译,添加到device/rockchip/common。首先我们需要找到设置gpio的底层代码,我的这个代码kernel//drivers/misc/gpio-dio.c。之后就该去写jni的实现,这里我们渠道frameworks/base/services/core/jin下进行实现。之后写一下他的实现 services/core/java/com/android/server/gpio/
2024-10-22 10:01:05
179
原创 android13 左滑显示通知栏,右滑显示快速设置
有这个功能后我们就需要看下处理下滑的地方了,经过添加日志跟踪,我们发现他们都会调用到NotificationPanelViewController的setQsExpansion这个方法。之前已经定制过只让右侧显示了,现在有需要左侧也可以显示,之前是直接把左侧的下滑功能干掉,现在不能那么粗暴了,这个代码达到了一个玄妙的境界,都在一起就可以确保每次之后显示一侧的,避免滑动左侧后滑动右侧出现bug,,首先我们先给通知栏添加一下显示和隐藏的方法。
2024-10-16 17:35:49
554
1
原创 Android13 右侧滑动显示qs,左侧滑动不显示,
来获取触摸X值是,那我们就需要看他是如何给这个赋值的。在处理这个定制时客户要求删除掉通知栏,同时还要只能右侧显示qs,当我们只使用之前的左侧隐藏掉qs后,会出现滑动左侧出现一个黑色页面,这个显然是不符合客户需求。这样写完后确实可以只在右侧显示,但是测试发现滑动launcher左侧中间还是会显示qs,我们就添加一个新的补丁来解决。添加日志发现这里会在调用上面那个方法时提前执行,我们在这里进行赋值,就会到哪里进行判断。之后尝试隐藏父容器也失败了,那我们就换个思路,在滑动左侧时禁用掉下拉栏。
2024-09-03 11:41:26
443
原创 android13 下拉栏修改为圆形图标
这两个类其实在android11有实现,我们只需要借鉴下,再给这两个文件编进去烧录后发现systemUi崩溃,查看发现animator有个空指针异常。这里就是要添加图标的地方,现在的图标是QSTileViewImpl这个类实现的,我们要实现自己的肯定得给覆盖掉。我们想要将他改成圆形的图标,然后将字体修改到图标下方。首先我们要找到图标是在哪里添加进去的。这是我们新的实现,看下这个类的实现。在android13 默认使用了。他继承了一个类,我们也得实现。这样就可以实现圆形图标了,
2024-08-08 19:20:13
563
10
原创 Handler续谈(epoll)
因此从Android 2.3开始在Native层重新实现了一套阻塞/唤醒方案,Java层弃用Object#wait()/notify(),改为通过jni调用Native进入阻塞态。epoll主要是用来消息处理的,我们看下消息的获得方法 Message msg = me.mQueue.next();1)调用epoll_create()建立一个epoll对象(在epoll文件系统中为这个句柄对象分配资源)创建之后就该使用了,看下流程,我们肯定调用Looper.loop(),来等待方法。
2024-07-18 18:01:19
432
原创 手写一个简单的handler
之后加入我们要发送和接收数据,当然如果我们只发送一个数据,我们就可直接使用handler的方法,当我们有大量数据时呢,如果都使用send,势必会导致线程阻塞,所以我们就想着添加一个队列,我们先把要发送的数据添加进去,之后他们想要处理的数据在慢慢处理,于是我们就写了。他的key是当前线程, values我们可以存放一个looper,这样我们就可以得到这个唯一的looper了。这里就需要思考一个问题了,looper可以有多个吗,我们看个方法就明白了。这两个是主要方法,一个发,一个收。最后我们看下最终的调用。
2024-07-15 14:59:46
976
原创 Android14 在quickSettings中添加任意图标
之前的android版本中我们通过QSFactoryImpl实现,这里我们也看下这个类,在android14中通过依赖注入的方式实现的。我们看下每个的注解,他都添加了 @IntoMap.之后还添加了key来找到对应的值,要添加图标,首先我们需要给我们的图标添加在配置文件config.xml中。我们看他的构造方法通过依赖注入来得到map,map的数据是如何得到的呢。所以我们只需要实现我们的功能,并通过这个方法来将我们的方法添加进去。要是导入了gms里面有个重写,注意要在那里添加路径一般在。
2024-07-13 10:02:27
439
原创 SystemUI的volume
之后我们就先处理上层的吧,毕竟我是上层开发,发送了intent,我们就需要看哪里处理了这个intent ,这里只需要grep下就可以轻松找到VolumeDialogControllerImpl在这个类有添加这个intent的动作。这个方法最后会调用adjustStreamVolume,到这个方法后会执行两个操作,一个向上通知来让ui做出响应,一个向下来让系统调节音量。这个方法是应用音频的。分析完上层了,我们看下底层是如何实现的,上文提到他会通过发送消息来处理,我们看下消息是如何处理的。
2024-07-09 19:12:20
677
原创 连续点击左上角返回桌面
1.首先我们想到在继承的activity上进行修改,在这里改了后如果还有状态栏就无法点击状态栏来返回桌面。2.之后我们在viewRootImpl上进行了修改,这样所有的都会生效,包括状态栏。1.首先我们通过记录时间来完成这个功能。在这里我们有两种方式来实现这种功能。
2024-07-07 00:17:06
147
原创 StartActivity的流程
这里的 mInstrumentation.callActivityOnCreate(activity, r.state, r.persistentState)zhihoudaioy。将intent赋值给mRequest,最后我们得到了ActivityStarter,还记得上面得到这个后通过了一系列设置然后执行了execute这个方法,是和生命周期状态相关的。在这之后就resume完成了,之后如果需要pause就需要执行其他方法了。这里的oncreate就是我们经常重写的,这就是oncreate的流程。
2024-07-05 17:54:34
598
原创 android系统的亮度调节
这个图可以看到我们的背光是通过添加服务来实现的,所以走上面的服务mVintfLights.get().setLightState(mHwLight.id, lightState);来设置的,这里的mProperty是。可能着个类是父类,子类有实现,我们就看下我们看下得到的device的类型是啥。这个device的类型是LocalDisplayDevice,我们看下这个类。在这里设置后,这是个线程,会一直run,我们看下run的方法。通过这个来得到device,我们看下device是如何添加的。
2024-07-04 11:46:00
3422
原创 app使用Window覆盖系统亮度的流程浅析
在亮度调节时,如果超出范围,会赋值为PowerManager.BRIGHTNESS_INVALID_FLOAT,会不生效,默认会和屏幕亮度相同。这里调用了WIndowsManagerService里的relayoutWIndows这个方法。调用了这个方法 接着就找到了PowerManagerService.java这个类。调用了mCallback,这个类里的Callback是个抽象类。这里执行了performTraversal这个方法执行了。这个方法对传来的值进行了判断,对不符合标准的赋值为。
2024-07-03 14:13:27
893
空空如也
android13修改下拉栏的图标形状
2024-07-30
TA创建的收藏夹 TA关注的收藏夹
TA关注的人