No results found

Notification Icon Fix / 通知图标修复 - Xposed Module Repository

Notification Icon Fix

中文

A module for AOSP, MIUI and HyperOS. Using an algorithm to convert white notification icons into recognizable icons.

Supported System

  • Android 8.1 ~ AOSP main branch
  • HyperOS
  • MIUI 10 and above

Screenshots

Single Notification Multiple notifications with the same icon are automatically grouped
Multiple notification icons are automatically grouped Multiple notification icons are automatically grouped

Algorithm Details

  1. Determine and reduce oversized icons to the maximum allowed icon size
  2. Map the icon pixel position to a two-dimensional coordinate system and calculate the geometric center
  3. (For MIUI) Detect transparent borders and trim icons
  4. (For MIUI and HyperOS) Determine if the icon has a marketing banner and replace it with a perfect icon (Need to install it yourself)
  5. (For HyperOS) Determine if the icon is a weather icon, and replace it with an MAML icon with real-time temperature (there is a race on HyperOS, which shows that the temperature area is blank, which is a system bug)
  6. Calculate the average lumens, excluding transparent pixels
  7. Quantify the most common color of edge pixels
  8. Calculate the Euclidean distance between the color of the edge pixel and the most common color obtained above in the Lab color space to determine whether the icon has a border
  9. Determine whether the icon background is light or dark
  10. Use K-means quantizer to extract the primary color of the icon
  11. Invert the icon foreground according to the background and remove the border
  12. Determine the actual visible area of ​​the icon and remove the blank area based on the visual center
  13. Final result output, cache icon, and accent color to WeakHashMap

Package

io.github.howard20181.notificationiconfix

Authors

Howard Wu

Releases

1.6.10

Release Type: Stable

9/9/2025, 4:32:04 PM

View all releases

Releases

1.6.10

Release Type: Stable

9/9/2025, 4:32:04 PM

Changelog

  1. Fixed the media notification hook for Android R~T. Some car system UIs use an older version of media notifications even on Android T, but I'm probably the only user using this module in my car.
  2. Attempted to improve compatibility with Evolution-X. While keeping compatibility with third-party ROM changes like this tends to be a waste of time, it only requires three lines of code.
  3. Added two pixels to the outer border of the icon.

It's time to rewrite the icon generation algorithm. It's currently based on a "heuristic foreground extraction" algorithm written in Java. In layman's terms, it redraws the icon based on average brightness, but tries to optimize for edges. There are a ton of issues. It's impossible to cram OpenCV into the system module. Should I switch to the Sobel operator? Or implement erosion manually in Java? Anyway, I can't call external packages, so I'll have to write my own magic. My previous plan to use a third-party icon library hasn't been put on the agenda.

变更日志

  1. 为Android R~T修复媒体通知 hook。有些车机的系统界面即使是Android T 也在用低版本的媒体通知,但是车载上用这个模块的用户可能只有我。
  2. 尝试兼容 Evolution-X。虽然不应该浪费时间去兼容这种第三方ROM变更,但是只需要3行代码。
  3. 图标外边界增加2行像素。

生成图标的算法是时候重写了,现在是Java写的“启发式前景提取”,说人话是基于平均亮度的图标重绘,只不过尽量根据边的情况优化,一堆问题。也不可能把OpenCV塞进系统模块里。之后改用索伯算子?或者是手工用Java实现腐蚀?反正不能调用外部包,只能自己写魔法。之前计划的直接用第三方绘制的图标库也没提上日程。

Show older versions

© 2021 - 2025 New Xposed Module Repository