Skip to content

Details table: add CPU/SoC row — correlate battery-reporting quirks with the chipset, plus user spec value #168

Description

@almothafar

What problem does this solve?

Two motivations (maintainer request, 2026-07-16):

  1. Diagnostics. The battery-reporting quirks this app fights are chipset-correlated — the Kirin charge-counter unit bug (🔴 Bogus battery capacity + 1% health on devices with non-µAh CHARGE_COUNTER (Kirin) #69/Battery health: show 'Unknown' + tappable info when the charge gauge is unreliable (vs design capacity) #94), the Kirin CURRENT_NOW mA-vs-µA bug (Kirin (Mate 10 Pro): ongoing notification shows nonsense "Discharging −1 mA" — CURRENT_NOW reported in mA, not µA #152). Showing the SoC on the same screen as the readings makes it trivial to see "what kind of CPU reporting is happening" — both for the maintainer's own devices and for user bug reports.
  2. User value. A genuinely useful spec row for users comparing devices.

Proposed solution

Add a CPU/SoC row to the battery details table:

  • API 31+: Build.SOC_MANUFACTURER + Build.SOC_MODEL (e.g. "Qualcomm SM8550", "HiSilicon Kirin 970") — the public, purpose-built fields.
  • API 26–30 fallback (minSdk 26): Build.HARDWARE (e.g. kirin970, qcom) — raw but indicative; consider appending Build.BOARD when it adds signal.
  • Both SOC fields can return Build.UNKNOWN ("unknown") on some devices — treat blank/unknown as hide the row, consistent with the table's existing gating style (rate/current/time-to-full rows hide when untrustworthy).
  • Placement ("good spot"): in the device-info cluster — suggest directly after Technology, before Capacity, so the hardware identity sits next to the readings it explains.
  • The SoC string is raw device data, displayed as-is; only the row label is new — needs strings.xml + values-ar (repo enforces MissingTranslation).
  • Pure helper (e.g. socLabel(), API-gated) so it's unit-testable with Robolectric.

Bonus (directly serves motivation 1): include the SoC in the feedback email's deviceInfoBlock (MainActivity.java:514-519)`` so every bug report carries the chipset automatically.

Affected code

(permalinks pinned at f4460ac; grep the method names if lines have moved)

  • [BatteryDetailsFragment.java:325-363](https://github.com/almothafar/SimpleBatteryNotifier/blob/f4460acc3ba99320c3efe310fb51456af0939ab0/app/src/main/java/com/almothafar/simplebatterynotifier/ui/fragment/BatteryDetailsFragment.java#L325-L363)fillBatteryInfo row map
  • MainActivity.java:514-519`` — feedback device block
  • strings.xml / values-ar

Acceptance criteria

  • Row shows manufacturer + model on API 31+, Build.HARDWARE-based fallback below
  • Hidden when the device reports unknown/blank
  • Label localized (Arabic included); value renders correctly in RTL layout
  • Feedback email includes the SoC
  • Verified on the Kirin Mate 10 Pro (should read HiSilicon/kirin970) and the Samsung

Related: #69, #94, #152 (the quirks this helps correlate); #35 (add a QA row once shipped).

Metadata

Metadata

Assignees

No one assigned

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions