Skip to content

SystemUI: DynamicBar: Charging bolt improvements on lock screen#1310

Closed
iusmac wants to merge 860 commits intocrdroidandroid:16.0from
iusmac:systemui-charging-bolt-improvements-on-lock-screen
Closed

SystemUI: DynamicBar: Charging bolt improvements on lock screen#1310
iusmac wants to merge 860 commits intocrdroidandroid:16.0from
iusmac:systemui-charging-bolt-improvements-on-lock-screen

Conversation

@iusmac
Copy link
Copy Markdown
Member

@iusmac iusmac commented May 5, 2026

No description provided.

Zhuo Fu and others added 30 commits April 29, 2026 00:48
Persistent app compaction broken, fix by only do oom adj throttle check
for APP compact type

CRs-Fixed: 3453069
Change-Id: I2dc0ea5aca0b36fd09e71942fdd0f3eafdac2eec
Signed-off-by: Pranav Vashi <neobuddy89@gmail.com>
CRs-Fixed: 3858822
Change-Id: I6f06176d8e5e40a5fd2afb53b9417005f2e26b2a
Signed-off-by: Pranav Vashi <neobuddy89@gmail.com>
During system compaction, mark File pages as MADVISE_PAGEOUT instead
of MADVISE_COLD. This will drop clean pages and swap-out file pages
mapped as private.
This improves the bootup free memory.

CRs-Fixed: 3365547
Change-Id: I1311126d8fd551c48599e160360122c05cc8ea02
Signed-off-by: Pranav Vashi <neobuddy89@gmail.com>
[neobuddy89: Drop experimental stuff.]

Change-Id: I67d917630fbbba8c72bb94d0cd96ee2de1d71165
Signed-off-by: rmp22 <195054967+rmp22@users.noreply.github.com>
Signed-off-by: Pranav Vashi <neobuddy89@gmail.com>
Change-Id: I27277ae924f3563ee56a323804ba41e64e317731
Signed-off-by: rmp22 <195054967+rmp22@users.noreply.github.com>
Signed-off-by: Pranav Vashi <neobuddy89@gmail.com>
Change-Id: If1ed8a9a02c190ba9fb056c093c21b8b91c85161
Signed-off-by: Pranav Vashi <neobuddy89@gmail.com>
* Make it safer with proc lock block.
* Exclude important foreground states.
* Compact all non-zygote processes while at it.

Signed-off-by: Pranav Vashi <neobuddy89@gmail.com>
* Reduced from 10 min to 5 min. This functionality provides better UX.
* Add log.

Signed-off-by: Pranav Vashi <neobuddy89@gmail.com>
* Reduced from 10 minutes to 2 minutes.

Signed-off-by: Pranav Vashi <neobuddy89@gmail.com>
Change-Id: I4f77325c14d1bc78ed12c965537b8a1e1c9aae6d
Signed-off-by: rmp22 <195054967+rmp22@users.noreply.github.com>
Signed-off-by: Pranav Vashi <neobuddy89@gmail.com>
* Do not run this on screen-on path - as it is bit CPU intensive.

Signed-off-by: Pranav Vashi <neobuddy89@gmail.com>
The default behaviour is toggling the flashlight since we use secondaryClick as default onClick behaviour on small tiles.

Squashed:

    From: NurKeinNeid <nurkeinneid@derpfest.org>
    Date: Fri, 19 Sep 2025 01:42:17 +0200
    Subject: SystemUI: Fix flashlight strength control detection

    Change detection logic from 'mMaxLevel > mDefaultLevel' to 'mMaxLevel > 1'
    to properly detect devices where max and default levels are equal.

    Fixes flashlight strength control not working on some devices.

    Signed-off-by: NurKeinNeid <nurkeinneid@derpfest.org>
    Signed-off-by: Pranav Vashi <neobuddy89@gmail.com>

    From: Abhay Singh Gill <abhaygill017@gmail.com>
    Date: Fri, 19 Sep 2025 18:26:10 +0530
    Subject: SystemUI: Extend flashlight strength logic to flashlight controller

    Previously the flashlight strength was only applied when toggling it from the QS tile, now it works from other SystemUI components as well.

    Signed-off-by: Abhay Singh Gill <abhaygill017@gmail.com>
    Signed-off-by: Pranav Vashi <neobuddy89@gmail.com>

    From: Abhay Singh Gill <abhaygill017@gmail.com>
    Date: Fri, 19 Sep 2025 22:22:13 +0530
    Subject: SystemUI: Allow long click on flashlight tile

    Would be useful for adjusting flashlight strength when the tile is small/ icon only.

    Signed-off-by: Abhay Singh Gill <abhaygill017@gmail.com>
    Signed-off-by: Pranav Vashi <neobuddy89@gmail.com>

    From: ShevT <evgeny.shishkov@gmail.com>
    Date: Tue, 23 Sep 2025 14:10:54 +0300
    Subject: SystemUI: Changing the logic of the flashlight tile

     Single tap - on/off
     Long tap - flashlight strength dialog

    Signed-off-by: Pranav Vashi <neobuddy89@gmail.com>

    From: John Galt <johngaltfirstrun@gmail.com>
    Date: Mon, 29 Dec 2025 14:02:57 -0500
    Subject: SystemUI: make flashlight tile use real levels

    Signed-off-by: Pranav Vashi <neobuddy89@gmail.com>

    From: John Galt <johngaltfirstrun@gmail.com>
    Date: Tue, 30 Dec 2025 09:51:15 -0500
    Subject: SystemUI: make flashlight slider use primitive haptics if supported

    Signed-off-by: Pranav Vashi <neobuddy89@gmail.com>

Change-Id: I8da1d9c80cd2209a60cde524aa58bd251610244b
Signed-off-by: Abhay Singh Gill <abhaygill017@gmail.com>
Signed-off-by: Pranav Vashi <neobuddy89@gmail.com>
Change-Id: I9227b6b5512d813eb7b2ceab5dee7e54e6b95f92
Signed-off-by: Ghosuto <clash.raja10@gmail.com>
Signed-off-by: Pranav Vashi <neobuddy89@gmail.com>
Signed-off-by: Ghosuto <clash.raja10@gmail.com>
Signed-off-by: Pranav Vashi <neobuddy89@gmail.com>
Signed-off-by: Ghosuto <clash.raja10@gmail.com>
Signed-off-by: Pranav Vashi <neobuddy89@gmail.com>
after google changes in QPR2
Signed-off-by: Dmitrii <bankersenator@gmail.com>
Signed-off-by: Pranav Vashi <neobuddy89@gmail.com>
System icon pack changes were previously managed by reconstructing
some components which used them, such as KeyguardStatusBarView. This
introduced a memory leak where KeyguardStatusBarViewController never
unregistered a callback, thus it was not being garbage collected.
Furthermore, some usages of the system icons were not updated on a
pack change. Change that by recreating the icons on theme changes.

Change-Id: Ic2b774d243546a88ac2e17f8441e073629caa1c8
Allows using the VPN's DNS instead of the set private DNS
Automatically restores the previous set mode

Signed-off-by: Pranav Vashi <neobuddy89@gmail.com>
* Settings->System->Gestures->Prevent ringing

core: Remove `@SystemApi` annotation for VOLUME_HUSH_CYCLE.

  This addition should not be annotated with `@SystemApi` because it
  creates an addition that fails the API test in user builds

Signed-off-by: rituj <ritujbeniwal@gmail.com>
Co-authored-by: Evan Anderson <evananderson@aospa.co>
Change-Id: I334bd165e970665ac5300d387a0ea6745748d3ad
Signed-off-by: aswin7469 <aswinas@pixysos.com>
Can be useful in some cases.

Change-Id: I999337cc55e9675cedde35191a6438d90744e5aa
Signed-off-by: LibXZR <i@xzr.moe>

Adapt to Android 13
Signed-off-by: someone5678 <nemui3353@gmail.com>
Change-Id: Iac9f0958676c02c49252e5a0e1a88383a7294d00
Signed-off-by: Pranav Vashi <neobuddy89@gmail.com>
…t call

and reset only in unregisterDefaultQRCodeScannerObserver
so it is in sync with isActivityCallable

Change-Id: If4fc2c541d0cee90b49b5769d34adc9d7bffbb02
Signed-off-by: Pranav Vashi <neobuddy89@gmail.com>
Signed-off-by: Pranav Vashi <neobuddy89@gmail.com>
If the cellular network is in service, and the data network name is not
available for some reason, rather than falling back to the default
network name of "No service", use the carrier name.

Issue: calyxos#2256
Change-Id: Ibf02f67b70cfc5d4804e9d6a3f53a9d112811d1d
Signed-off-by: Pranav Vashi <neobuddy89@gmail.com>
…ith lower version sdks

The applications compiled with lower version sdks can not request audio focus properly in some scenes, which will cause many anomalies.

Change-Id: I8875922efdfbcd08a7872e090c3c4b51446b2637
Signed-off-by: wumin3 <wumin3@xiaomi.com>
Signed-off-by: Pranav Vashi <neobuddy89@gmail.com>
When the user cycles fast between modes the last toast will show so late it'll be irrelevant

Change-Id: I0f8f442ea10d670663fdd298f2198f6e8baa7a36
Signed-off-by: Dmitrii <bankersenator@gmail.com>
Signed-off-by: Pranav Vashi <neobuddy89@gmail.com>
Avoid it getting cut off at bottom on devices with low udfps, where
the bottom margin is lesser.

Change-Id: I2ce00abeba353fff4cb4aa8a58257ef54bf4cca9
Signed-off-by: Pranav Vashi <neobuddy89@gmail.com>
Saw some users complaining about that and I personally don't see much
point of it.

Change-Id: I5b9fe7e4a4f14b231533cd9e295a03bfb852a9b3
Signed-off-by: Pranav Vashi <neobuddy89@gmail.com>
onUserStopped() method name was misleading, it's called from onUserStopping(), while the user is
still running.

Initial research was done by maade93791 <70593890+maade69@users.noreply.github.com>

Co-authored-by: maade93791 <70593890+maade69@users.noreply.github.com>
Signed-off-by: Pranav Vashi <neobuddy89@gmail.com>
summary:(Animator$AnimatorCaller$$ExternalSyntheticLambda1.call)java.lang.NullPointerException--Attempt to invoke interface method 'void android.animation.Animator$AnimatorListener.onAnimationEnd(android.animation.Animator, boolean)' on a null object reference

det:versionName:20240724.0, versionCode:202407240
java.lang.NullPointerException: Attempt to invoke interface method 'void android.animation.Animator$AnimatorListener.onAnimationEnd(android.animation.Animator, boolean)' on a null object reference
at android.animation.Animator$AnimatorCaller$$ExternalSyntheticLambda1.call(D8$$SyntheticClass:0)
at android.animation.Animator.callOnList(Animator.java:666)
at android.animation.Animator.notifyListeners(Animator.java:609)
at android.animation.Animator.notifyEndListeners(Animator.java:634)
at android.animation.ValueAnimator.endAnimation(ValueAnimator.java:1306)
at android.animation.ValueAnimator.doAnimationFrame(ValueAnimator.java:1566)
at android.animation.AnimationHandler.doAnimationFrame(AnimationHandler.java:344)
at android.animation.AnimationHandler.-$$Nest$mdoAnimationFrame(Unknown Source:0)
at android.animation.AnimationHandler$1.doFrame(AnimationHandler.java:87)
at android.view.Choreographer$CallbackRecord.ru

Test:UAT

Change-Id: I135eac97787a6d3b820a2336908bf1412d2ed218
Signed-off-by: xiangshuangxi <xiangshuangxi@xiaomi.com>
rmp22 and others added 26 commits April 29, 2026 00:48
Change-Id: Ie2732937474a9daceddea6d6365ea67c7bab9e41
Signed-off-by: rmp22 <195054967+rmp22@users.noreply.github.com>
Signed-off-by: Pranav Vashi <neobuddy89@gmail.com>
A function meant for logging purposes throwing an uncaught exception seems wrong, and Google seems
to agree. This fix was present in SystemUIGoogle in CP1A April. Doesn't appear to be any other
changes in CP1A related to how the receiver BubbleViewProvider was handled at
getBubblePackageForLogging call sites.

Test: manual, with bubbles in Signal as reported in original issue. Note that I was never able to
reproduce the crash myself.
Test: atest WMShellMultivalentTestsOnDevice:com.android.wm.shell.bubbles.logging.BubbleSessionTrackerImplTest \
WMShellMultivalentTestsOnDevice:com.android.wm.shell.bubbles.BubbleStackViewTest \
WMShellMultivalentTestsOnDevice:com.android.wm.shell.bubbles.BubbleControllerTest \
WMShellMultivalentTestsOnDevice:com.android.wm.shell.bubbles.BubbleControllerBubbleBarTest

Signed-off-by: Pranav Vashi <neobuddy89@gmail.com>
On devices with optical UDFPS, starting fingerprint authentication while the screen
is entering sleep can briefly trigger HBM/illumination and flash the panel.

Gate UDFPS listening as soon as the sleep transition is dispatched, keep it blocked
until the screen is fully off, and clear the gate on wakeup so fingerprint remains responsive.

Change-Id: I9242668e2bfadf0e4bd7f2bc1ee68b749237293e
Signed-off-by: Pranav Vashi <neobuddy89@gmail.com>
simpleperf on userdebug shows RenderThread at 47.9% CPU during scroll, with 2.77% in __vfprintf and 1.05% in __strlen from 11 ATRACE points firing every frame in the render hot path (DrawFrameTask, CanvasContext, RenderNode, SkiaPipeline). on userdebug these are always active. add debug.hwui.trace_each_frame property (default false) with HWUI_FRAME_ATRACE_* conditional macros that short-circuit to a branch-not-taken when disabled

Change-Id: Ia0e81e1f39a6b7b84fd44c588681d9fc5a653996
Signed-off-by: Pranav Vashi <neobuddy89@gmail.com>
Change-Id: I84842e8e67ab3736108fb77ddc6e875011d4f7e5
Signed-off-by: Pranav Vashi <neobuddy89@gmail.com>
Signed-off-by: Pranav Vashi <neobuddy89@gmail.com>
…n and weight variants

When notifications_redesign_fonts is enabled, SystemUI styles use
variable-* font families with optical sizing and ROND axis values.
Disabling the flag was previously used as a workaround to make custom
font overrides work, but this broke Google Sans Flex styling.

Changes:
- Add DEFAULT_FONT_ROOT and pass-through guard so variable-* families
  are untouched when Google Sans Flex is the active font, preserving
  ROND axis and optical sizing from fonts_customization.xml
- Move "variable" into OVERRIDE_FONTS so variable-* requests are
  eligible for remapping in all packages when a custom font is active
- Add DEFAULT_FONT_FALLBACKS and resolveDefaultTypeface() which first
  tries the currently active font, then walks known GSF aliases, with
  Typeface.DEFAULT as final fallback
- Fix resolveDefaultTypeface() to resolve the current custom font as
  the base typeface for TypefaceFactory, so custom fonts apply in
  variable-* UI slots system wide instead of falling back to GSF
- Update TypefaceFactory.create() to accept a pre-resolved Typeface
  base instead of a String
- Update Typeface.changeFont() to use FontController.resolveBaseTypeface()
  for consistent resolution including the current font priority
- Add resolveNamedVariant() which maps requested weight to named suffix
  candidates (-medium, -semi-bold, -bold etc.) and looks them up in
  sSystemFontMap before falling back to dynamic Typeface.create(),
  correctly resolving aliased weight variants for fonts like Aclonica
  that define weights as aliases rather than separate font files

Result: GSF retains full variable-* optical styling on default; custom
fonts apply system wide through all variable-* and google-sans-* slots
with correct weight resolution via named aliases where available, and
dynamic weight building as fallback. Flag can remain enabled.
Signed-off-by: Pranav Vashi <neobuddy89@gmail.com>
Signed-off-by: Pranav Vashi <neobuddy89@gmail.com>
* New translations cr_strings.xml (Romanian)

[ci skip]

* New translations cr_strings.xml (French)

[ci skip]

* New translations cr_strings.xml (Spanish)

[ci skip]

* New translations cr_strings.xml (Arabic)

[ci skip]

* New translations cr_strings.xml (Belarusian)

[ci skip]

* New translations cr_strings.xml (Bulgarian)

[ci skip]

* New translations cr_strings.xml (Catalan)

[ci skip]

* New translations cr_strings.xml (Czech)

[ci skip]

* New translations cr_strings.xml (German)

[ci skip]

* New translations cr_strings.xml (Greek)

[ci skip]

* New translations cr_strings.xml (Finnish)

[ci skip]

* New translations cr_strings.xml (Hebrew)

[ci skip]

* New translations cr_strings.xml (Hungarian)

[ci skip]

* New translations cr_strings.xml (Italian)

[ci skip]

* New translations cr_strings.xml (Japanese)

[ci skip]

* New translations cr_strings.xml (Korean)

[ci skip]

* New translations cr_strings.xml (Kurdish)

[ci skip]

* New translations cr_strings.xml (Dutch)

[ci skip]

* New translations cr_strings.xml (Polish)

[ci skip]

* New translations cr_strings.xml (Portuguese)

[ci skip]

* New translations cr_strings.xml (Russian)

[ci skip]

* New translations cr_strings.xml (Slovak)

[ci skip]

* New translations cr_strings.xml (Turkish)

[ci skip]

* New translations cr_strings.xml (Ukrainian)

[ci skip]

* New translations cr_strings.xml (Chinese Simplified)

[ci skip]

* New translations cr_strings.xml (Chinese Traditional)

[ci skip]

* New translations cr_strings.xml (Vietnamese)

[ci skip]

* New translations cr_strings.xml (Indonesian)

[ci skip]

* New translations cr_strings.xml (Persian)

[ci skip]

* New translations cr_strings.xml (Estonian)

[ci skip]

* New translations cr_strings.xml (Azerbaijani)

[ci skip]

* New translations cr_strings.xml (Santali)

[ci skip]

* New translations cr_strings.xml (Romanian)

[ci skip]

* New translations cr_strings.xml (French)

[ci skip]

* New translations cr_strings.xml (Spanish)

[ci skip]

* New translations cr_strings.xml (Arabic)

[ci skip]

* New translations cr_strings.xml (Belarusian)

[ci skip]

* New translations cr_strings.xml (Bulgarian)

[ci skip]

* New translations cr_strings.xml (Catalan)

[ci skip]

* New translations cr_strings.xml (Czech)

[ci skip]

* New translations cr_strings.xml (German)

[ci skip]

* New translations cr_strings.xml (Greek)

[ci skip]

* New translations cr_strings.xml (Finnish)

[ci skip]

* New translations cr_strings.xml (Hebrew)

[ci skip]

* New translations cr_strings.xml (Hungarian)

[ci skip]

* New translations cr_strings.xml (Italian)

[ci skip]

* New translations cr_strings.xml (Japanese)

[ci skip]

* New translations cr_strings.xml (Korean)

[ci skip]

* New translations cr_strings.xml (Kurdish)

[ci skip]

* New translations cr_strings.xml (Dutch)

[ci skip]

* New translations cr_strings.xml (Polish)

[ci skip]

* New translations cr_strings.xml (Portuguese)

[ci skip]

* New translations cr_strings.xml (Russian)

[ci skip]

* New translations cr_strings.xml (Slovak)

[ci skip]

* New translations cr_strings.xml (Turkish)

[ci skip]

* New translations cr_strings.xml (Ukrainian)

[ci skip]

* New translations cr_strings.xml (Chinese Simplified)

[ci skip]

* New translations cr_strings.xml (Chinese Traditional)

[ci skip]

* New translations cr_strings.xml (Vietnamese)

[ci skip]

* New translations cr_strings.xml (Portuguese, Brazilian)

[ci skip]

* New translations cr_strings.xml (Indonesian)

[ci skip]

* New translations cr_strings.xml (Persian)

[ci skip]

* New translations cr_strings.xml (Estonian)

[ci skip]

* New translations cr_strings.xml (Azerbaijani)

[ci skip]

* New translations cr_strings.xml (Santali)

[ci skip]

* New translations cr_strings.xml (Portuguese, Brazilian)

[ci skip]
Signed-off-by: Pranav Vashi <neobuddy89@gmail.com>
During early boot, framework callers can ask for DropBoxManager before the
`dropbox` binder has been published. Using getServiceOrThrow() sends that path
through onServiceNotFound(), which emits another WTF from a core process and can
cascade into recursive error handling while system_server is already failing.

Switch DROPBOX_SERVICE to ServiceManager.getService(), return null while the
binder is still absent, and treat dropbox as an allowed transiently-unavailable
service in getSystemService(). This keeps the early-boot path null-safe without
spamming an extra WTF that can amplify DeadSystemException-style failures.

Signed-off-by: Quince <quinceroms@gmail.com>
Signed-off-by: Pranav Vashi <neobuddy89@gmail.com>
Some devices legitimately ship without persistent data block / OEM lock, and
those services can also be transiently absent while system_server is still
coming up or already tearing down. Treating them like mandatory services routes
lookups through onServiceNotFound() and emits extra WTF noise right in the same
DeadSystem failure paths we are trying to contain.

ActivityManagerService also should not assume DropBox remains usable once the
system is already failing, and LockSettingsStorage should quietly skip FRP
helpers when the persistent data block service is absent instead of turning
that into another fatal-looking report.

Use nullable lookups for the optional services, whitelist them in
getSystemService(), and wrap DropBox queries/writes so these reporting paths
fail closed instead of recursively amplifying the original failure.

Signed-off-by: Quince <quinceroms@gmail.com>
Signed-off-by: Pranav Vashi <neobuddy89@gmail.com>
AxSandboxService is registered in SystemServiceRegistry before its
binder service is published by system_server. During boot, callers such
as SettingsProvider can ask for AxSandboxManager before
AxSandboxService.systemReady() adds the binder to ServiceManager.

The AxSandbox fetcher correctly returns null in that window and retries
on later lookups, but SystemServiceRegistry treats the null result as a
missing manager wrapper and logs a WTF when service-not-found diagnostics
are enabled. This produces thousands of false boot-time errors until
AxSandboxService becomes ready.

Treat ax_sandbox like other framework services that can legitimately be
unavailable during early boot, while preserving the existing retry and
manager creation behavior once the service is published.

Signed-off-by: Quince <quinceroms@gmail.com>
Signed-off-by: Pranav Vashi <neobuddy89@gmail.com>
Signed-off-by: Pranav Vashi <neobuddy89@gmail.com>
Signed-off-by: Pranav Vashi <neobuddy89@gmail.com>
Signed-off-by: Pranav Vashi <neobuddy89@gmail.com>
* Based on sparkle and minimal wave styles.

Signed-off-by: Pranav Vashi <neobuddy89@gmail.com>
Signed-off-by: Pranav Vashi <neobuddy89@gmail.com>
Change-Id: I77d30b18613702d340e1987316dd4097837a282c
Signed-off-by: Saikrishna1504 <saikrishna26918@gmail.com>
Signed-off-by: Pranav Vashi <neobuddy89@gmail.com>
Signed-off-by: Pranav Vashi <neobuddy89@gmail.com>
…ly charged

* Also, switch to Modifier.graphicsLayer runnable to do the alpha
  property adjustments entirely by the GPU.

Signed-off-by: iusmac <iusico.maxim@libero.it>
…lock screen

Signed-off-by: iusmac <iusico.maxim@libero.it>
* Scaled to fit the drawing size (better battery capacity view).
* Made it perfectly symmetrical.

Signed-off-by: iusmac <iusico.maxim@libero.it>
@neobuddy89 neobuddy89 force-pushed the 16.0 branch 2 times, most recently from 9f16470 to 9df1b84 Compare May 10, 2026 08:27
@neobuddy89
Copy link
Copy Markdown
Member

added

@neobuddy89 neobuddy89 closed this May 10, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.