Files

4.4 KiB
Raw Permalink Blame History

Recon map: Google Calculator / Pixel Calculator (Android)

Scope: the whole app: keypad, scientific functions, live result, history, memory, copy/paste, settings For: personal use, a calculator without Google services (project NoGooleApps) Date: 2026-10-17

Sources

# source URL notes
1 app store listing https://play.google.com/store/apps/details?id=com.google.android.calculator page did not load via fetch; listing images supplied by the user (ref-01..03)
2 screenshots replica/rechner/screens/ref-01..07.png supplied by user: history with "Current expression" sheet and MS/Copy menu (ref-01, -02, -06), scientific panel open (ref-03), launcher icon (ref-04), selection with Cut/Copy/MS (ref-05), empty dark state with Material You colours (ref-07). Reference only, never shipped
3 general knowledge of the app as a user – precise arithmetic (no 0.1+0.2 errors), very long results scroll, Deg/Rad, Inv swaps functions

Core loop

Type a calculation and see the result update live, then tap = to make it the new start value.

Screens

ID screen how to reach purpose key components states seen
S01 Calculator launch type and evaluate display (expression + live result, right aligned, auto-shrinking font), scientific row (√ π ^ !) with expand chevron, keypad 4×5 (AC, ( ), %, ÷ / 7-9 × / 4-6 − / 1-3 + / 0 . ⌫ =), history button, overflow empty (cursor), typing, live result, result after =, error ("Kann nicht durch 0 teilen"), too long (scrolls) (ref-05..07)
S02 Scientific panel chevron or swipe up on the row more functions extra rows: Deg/Rad, sin cos tan, Inv, e ln log, (with Inv: sin⁻¹ cos⁻¹ tan⁻¹, eˣ, 10ˣ, x²) collapsed, expanded (ref-03)
S03 History pull the display down / history button past calculations list grouped by day ("Heute"), each expression + result, "Current expression" at the bottom of the sheet, tap to reuse, clear history empty, filled (ref-01, -02, -06)
S04 Context menu long press on display or a history result reuse values Cut, Copy, Paste, MS (memory store), MR when memory set (ref-01, -05)
S05 Settings / overflow ⋮ options history clear, choose theme, about, (original: send feedback)

Flows

F01 Quick sum
    S01: 1 2 + 3 4 → live result 46 → =
    happy path taps: 6
F02 Scientific
    S01 → expand → sin ( Deg … ) → =
F03 Reuse an old result
    S01 pull down → S03 → tap a result → it is inserted at the cursor
F04 Copy the result
    S01 long press → S04 Copy
F05 Store a value and recall it
    long press → MS … later long press → MR
    edge: memory survives app restart
edge cases everywhere: division by zero, unbalanced parentheses (auto close), 0.1+0.2 exact, 100! (big), %, implicit multiplication "2π", leading minus, very long input

Components

component variants states used on
Key digit (surface), operator (secondary container), AC (tertiary), equals (primary, fully round), function (text only in the collapsed row / tonal pills when expanded) default, pressed (shape squishes to a squircle), disabled S01, S02
Display expression (large, shrinks with length), result preview (smaller, accent colour), cursor empty, typing, final, error S01
Sheet history over display with drag handle collapsed, expanded S03
History row expression muted, result bold pressed S03
Context menu floating pill menu S04
Chevron expand/collapse S02

Inferred data model

HistoryEntry  id, expression (text), result (text), created_at
              evidence: S03 "Today" grouping  confidence: high
Memory        value (exact number as text)   confidence: high (MS/MR)
Settings      angle_unit (deg|rad), theme      confidence: high

Feature matrix

See features.csv.

Out of scope

  • Google's feedback/help integration.
  • Google's own number fonts and icons: Roboto Flex and own icon.

Size

Screens 5, flows 5, entities 3. Hard parts: (1) exact arithmetic with big numbers and correct rounding/display of irrational results, (2) a parser that tolerates partial input for the live result (implicit multiplication, auto-closing parentheses, percent rules), (3) the expressive keypad (shape morph on press, auto-sizing display). Size: S–M.