Filtra spam, chiamate anonime, numeri sospetti e prefissi indesiderati senza account, senza server obbligatorio e senza caricare la rubrica nel cloud.
CallGuardian nasce per dare controllo reale sulle chiamate in arrivo: bloccare ciò che è rischioso, avvisare quando serve prudenza e lasciare passare i contatti importanti. Il punto forte è il modello locale: regole, log, statistiche e classificazione restano sul dispositivo.
- Protezione chiamate tramite
CallScreeningServiceAndroid. - Blocco di numeri, prefissi, range, nazioni e chiamate anonime.
- Whitelist locale per contatti e numeri sempre consentiti.
- Gestione chiamate estere con modalità avviso, blocco selettivo o blocco per nazione.
- Classificazione locale a punteggio con priorità regole configurabile.
- Registro eventi con azione, motivo, punteggio, paese e regola applicata.
- Statistiche locali su chiamate bloccate, categorie, orari e paesi.
- Notifiche e overlay opzionale per chiamate sospette.
- Backup/export JSON locale.
- Tema chiaro, scuro o automatico, con palette selezionabili.
- Database locale cifrato con SQLCipher e chiave protetta da Android Keystore.
- Interfaccia localizzata in italiano, inglese, spagnolo, francese, tedesco e portoghese.
| Protezione | Regole | Registro | Statistiche | Opzioni |
|---|---|---|---|---|
![]() |
![]() |
![]() |
![]() |
![]() |
CallGuardian è progettata per funzionare completamente in locale.
Non invia obbligatoriamente a server esterni:
- rubrica;
- cronologia chiamate;
- blacklist o whitelist;
- statistiche;
- numeri telefonici;
- regole configurate dall'utente.
Il database dell'app è cifrato localmente. I backup automatici Android escludono i dati sensibili configurati nelle regole di backup del progetto.
flowchart LR
A["Chiamata in arrivo"] --> B["Android CallScreeningService"]
B --> C["Normalizzazione numero"]
C --> D["Regole locali e rubrica"]
D --> E["Classificatore a punteggio"]
E --> F{"Decisione"}
F --> G["Consenti"]
F --> H["Avvisa"]
F --> I["Silenzia"]
F --> J["Blocca"]
E --> K["Log e statistiche locali"]
Nota Android: per bloccare davvero le chiamate, l'utente deve assegnare a CallGuardian il ruolo di app "ID chiamante e spam" (ROLE_CALL_SCREENING). L'app guida l'utente nella configurazione.
- Kotlin
- Android SDK 35
- Jetpack Compose e Material 3
- MVVM
- Hilt
- Room
- SQLCipher
- WorkManager
- Gson
- libphonenumber
- JUnit
- Android Studio Ladybug o superiore
- JDK 17
- Android SDK con
compileSdk 35 - Gradle Wrapper incluso
- Dispositivo o emulatore Android API 29+
Build debug:
.\gradlew.bat :app:assembleDebugUnit test:
.\gradlew.bat :app:testDebugUnitTestAPK generato:
app/build/outputs/apk/debug/app-debug.apk
Smoke test ADB, con dispositivo collegato e debug USB attivo:
.\scripts\test-adb.ps1Gli artefatti dello smoke test vengono salvati in build/adb-smoke/.
.
|-- app/
| |-- src/main/java/com/callguardian/app/
| | |-- core/ # modelli, permessi e logica dominio
| | |-- data/ # Room, repository, backup e classificatore
| | |-- di/ # moduli Hilt
| | |-- telephony/ # CallScreeningService, normalizzazione e notifiche
| | |-- ui/ # Compose UI, navigazione, tema e schermate
| | `-- viewmodel/ # ViewModel MVVM
| `-- src/test/ # unit test
|-- docs/
| |-- assets/ # screenshot e materiali GitHub
| `-- play/ # schede, privacy policy e asset Play Store
|-- release/ # pacchetto pubblicazione Play Store
|-- scripts/ # smoke test ADB
|-- BUILD_AND_TEST.md
|-- GENERATED_FILES.md
`-- callguardian_specifica_tecnica_completa.md
- Build e test
- File generati
- Specifica tecnica completa
- Store listing Play Store
- Privacy policy
- Checklist rilascio
- Validazione su più dispositivi Android reali.
- Test strumentali Compose sulle schermate principali.
- Import backup cifrato oltre all'export JSON.
- Miglioramento statistiche con serie temporali più ricche.
- Eventuale sincronizzazione opzionale, esplicita e disattivata di default.
Leggi CONTRIBUTING.md prima di aprire una pull request. Per bug e nuove idee sono disponibili i template GitHub in .github/ISSUE_TEMPLATE/.
Versione app: 1.0.0
Il progetto è una base Android reale e funzionante per protezione chiamate locale. Prima della pubblicazione è consigliato validare il comportamento su più dispositivi Android e completare le policy richieste dagli store.
Questo progetto è distribuito sotto licenza Apache License 2.0. Vedi LICENSE.






