replica(telefon): recon, feature matrix, reference screenshots
Co-Authored-By: Claude Opus 5.5 <[email protected]>
This commit is contained in:
@@ -0,0 +1,98 @@
|
||||
# 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.
|
||||
Reference in New Issue
Block a user