Files

99 lines
6.0 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# Recon map: Google Phone / Pixel Phone (Android)
Scope: home (search, filter chips, favourites, call log), keypad with contact search, voicemail tab, contact/number details, incoming call, in-call screen, call notifications
For: personal use, a dialer without Google services (project NoGooleApps)
Date: 2026-10-17
## Sources
| # | source | URL | notes |
| --- | --- | --- | --- |
| 1 | screenshots | replica/telefon/screens/ref-01..03.png | supplied by user: home/incoming/in-call (Material 3 Expressive, 2025), older dark in-call with keypad and "More" (hold, video, add call), German call-assist sheet (recording, translation). Reference only |
| 2 | platform docs | https://developer.android.com/reference/android/telecom/InCallService | how a default dialer receives and controls calls |
| 3 | platform docs | https://developer.android.com/reference/android/app/role/RoleManager#ROLE_DIALER | default phone app role |
| 4 | general knowledge as a user | – | filters, favourites, call history grouping, swipe pill answer/decline |
## Core loop
See who called and call back in one tap; answer an incoming call reliably, even on the lock screen.
## Screens
| ID | screen | how to reach | purpose | key components | states seen |
| --- | --- | --- | --- | --- | --- |
| S01 | Home | launch, tab "Start" | favourites + recent calls | search bar with menu, filter chips (Alle, Verpasst, Kontakte), favourites row (round avatars, "Alle ansehen"), call log grouped by day (avatar/initial, name or number, direction icon + type + time, call button), bottom nav | empty, no permission, filled, missed in red (ref-01) |
| S02 | Search | tap the search bar | find contacts and numbers | text field, contact results, "call number" row | empty, results |
| S03 | Keypad | tab "Wähltasten" | dial a number | number field, 12 keys with letters, call FAB, backspace (long = clear), T9 contact suggestions | empty, typing, matches |
| S04 | Voicemail | tab "Mailbox" | reach voicemail | call voicemail button, number from SIM | no number, number set |
| S05 | Contact / number details | tap avatar or row | everything about a person | big avatar, name, numbers with call/SMS, recent calls with that number, favourite star, open in contacts app | contact, unknown number |
| S06 | Incoming call | system, full screen | answer or decline | caller name, number + label, big scalloped avatar, quick actions (Nachricht), slide pill Ablehnen ← ☎ → Annehmen | ringing, locked screen (ref-01) |
| S07 | In call | after answer / outgoing | control the call | status (Wird angerufen…, timer), name, number, avatar, buttons Wähltasten, Stumm, Lautsprecher, Mehr (Halten, Anruf hinzufügen), red hang-up pill; inline DTMF keypad | dialing, active, on hold, ended (ref-01, ref-02) |
| S08 | Call notification | heads-up / ongoing | answer from anywhere, return to call | incoming (Annehmen/Ablehnen), ongoing (Auflegen, timer) | |
| S09 | Settings | menu | options | default app status, quick replies, sounds and vibration (system), blocked numbers (system) | |
## Flows
```
F01 Call back a missed call
S01 → tap call icon on the row → S07
taps: 1
F02 Call a favourite
S01 → tap avatar → S07 (taps: 1)
F03 Dial a number
S03 → digits → call FAB → S07
F04 Answer
S06 slide to "Annehmen" → S07 → hang up
edge: locked phone, second incoming call while in a call, caller hangs up while ringing
F05 Decline with a message
S06 → Nachricht → pick a quick reply → SMS app
F06 Find a contact
S01 search → S02 → tap → S05 → call
F07 Use the keypad during a call (menus, PIN)
S07 → Wähltasten → DTMF
F08 Become the default phone app (first run)
S01 → banner → system role dialog → yes
```
## Components
| component | variants | states | used on |
| --- | --- | --- | --- |
| Search bar | pill with menu + search icon | idle, focused | S01, S02 |
| Filter chip | selected, unselected | | S01 |
| Avatar | photo, initial on colour, unknown (person icon), business (building icon); sizes 48 / 120 / 200 scalloped | | all |
| Call log row | grouped card (large outer, small inner radius), direction icon (incoming, outgoing, missed red), call button | pressed | S01 |
| Dial key | digit + letters | pressed | S03, S07 |
| Call button | green round FAB (keypad), red pill (hang up) | | S03, S07 |
| Slide pill | Ablehnen ← thumb → Annehmen | idle, dragging | S06 |
| Toggle button | round tonal, on = filled | mute, speaker, hold | S07 |
| Bottom nav | Start, Wähltasten, Mailbox | | S01, S03, S04 |
## Inferred data model
The phone app owns almost no data: call history is the system `CallLog`, people are the system `ContactsContract`, voicemail number comes from the SIM.
```
CallEntry (system CallLog) number, name, type (incoming|outgoing|missed|rejected|blocked|voicemail), date, duration, numberLabel
confidence: high
Contact (system Contacts) id, lookupKey, name, photoUri, starred, phones[label, number]
confidence: high
QuickReply own: id, text, position (default set, editable) confidence: high
Settings own: theme confidence: high
```
## Feature matrix
See `features.csv`.
## Out of scope
- Spam detection, caller ID from Google's database, "Non-Spam/Spam" filters: Google service.
- Call screening, hold for me, direct my call, call recording, live translation (ref-03): Google AI services; recording is also blocked for normal apps since Android 10.
- Visual voicemail transcription: carrier/Google service; we only dial voicemail.
- Wi-Fi calling, RTT, video calls: carrier/IMS features the system handles.
- Editing contacts: done by a contacts app; we open it.
## Size
Screens 9, flows 8, entities 2 own. Hard parts: (1) becoming the default dialer and implementing an `InCallService` correctly (call states, audio routing, hold, multiple calls), (2) the incoming call UI over the lock screen with full-screen intent and ringtone handled by the system, (3) fast call log + contacts merging and T9 search. Size: M.