replica(telefon): recon, feature matrix, reference screenshots
Co-Authored-By: Claude Opus 5.5 <[email protected]>
This commit is contained in:
@@ -0,0 +1,34 @@
|
|||||||
|
feature,area,priority,original,clone,notes
|
||||||
|
Become the default phone app (role request),core,must,yes,no,
|
||||||
|
Call log grouped by day with direction icons,home,must,yes,no,
|
||||||
|
Call back from the log in one tap,home,must,yes,no,
|
||||||
|
Missed calls highlighted,home,must,yes,no,
|
||||||
|
Filter chips All Missed Contacts,home,should,yes,no,
|
||||||
|
Favourites row (starred contacts),home,must,yes,no,
|
||||||
|
Search contacts and numbers,search,must,yes,no,
|
||||||
|
Keypad with letters,keypad,must,yes,no,
|
||||||
|
T9 contact suggestions on the keypad,keypad,should,yes,no,
|
||||||
|
Place a call,call,must,yes,no,
|
||||||
|
Incoming call full screen with slide answer/decline,call,must,yes,no,
|
||||||
|
Incoming call notification with actions,call,must,yes,no,
|
||||||
|
In-call screen with timer,call,must,yes,no,
|
||||||
|
Mute,call,must,yes,no,
|
||||||
|
Speaker,call,must,yes,no,
|
||||||
|
In-call keypad (DTMF),call,must,yes,no,
|
||||||
|
Hold,call,should,yes,no,
|
||||||
|
Second incoming call (call waiting),call,should,yes,no,
|
||||||
|
Ongoing call notification,call,must,yes,no,
|
||||||
|
Proximity sensor screen off at the ear,call,must,yes,no,
|
||||||
|
Decline with quick reply SMS,call,should,yes,no,
|
||||||
|
Contact and number details with history,details,should,yes,no,
|
||||||
|
Toggle favourite,details,could,yes,no,
|
||||||
|
Open contact in contacts app / add contact,details,should,yes,no,
|
||||||
|
Call voicemail,voicemail,should,yes,no,
|
||||||
|
Delete call log entries,home,could,yes,no,
|
||||||
|
Expressive design (scalloped avatars grouped cards slide pill),design,must,yes,no,
|
||||||
|
Dynamic colour and dark mode,design,must,yes,no,
|
||||||
|
Bluetooth audio route,call,should,yes,no,
|
||||||
|
Spam detection and caller ID,home,could,yes,skip,Google database
|
||||||
|
Call screening and hold for me,call,could,yes,skip,Google AI
|
||||||
|
Call recording and live translation,call,could,yes,skip,Google AI; recording blocked for apps
|
||||||
|
Visual voicemail transcription,voicemail,could,yes,skip,carrier/Google
|
||||||
|
@@ -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.
|
||||||
Binary file not shown.
|
After Width: | Height: | Size: 332 KiB |
Binary file not shown.
|
After Width: | Height: | Size: 113 KiB |
Binary file not shown.
|
After Width: | Height: | Size: 420 KiB |
Reference in New Issue
Block a user