Digital Covid Certificate SDK

Overview

Digital Green Certificate SDK


Read this in other languages: English.

📄 Leggi la documentazione dettagliata

Indice

Contesto

Questo repository contiene un Software Development Kit (SDK), rilasciato dal Ministero della Salute italiano, che consente di integrare nei sistemi di controllo degli accessi, inclusi quelli di rilevazione delle presenze, le funzionalità di verifica della Certificazione verde COVID-19, mediante la lettura del QR code.

Trattamento dati personali

Il trattamento dei dati personali svolto dalle soluzioni applicative sviluppate a partire dalla presente SDK deve essere effettuato limitatamente alle informazioni pertinenti e alle operazioni strettamente necessarie alla verifica della validità delle Certificazioni verdi COVID-19. Inoltre è fatto esplicito divieto di conservare il codice a barre bidimensionale (QR code) delle Certificazioni verdi COVID-19 sottoposte a verifica, nonché di estrarre, consultare, registrare o comunque trattare per finalità ulteriori rispetto a quelle previste per la verifica della Certificazione verde COVID-19 o le informazioni rilevate dalla lettura dei QR code e le informazioni fornite in esito ai controlli, come indicato nel DPCM 12 ottobre 2021

Installazione

E' necessario clonare questo progetto insieme ai seguenti:

nel seguente modo:

your_project_folder
|___your_app
|___sdk_repo
|___dgca-app-core-android
|___dgc-certlogic-android

Uso

L'applicazione di verifica dovrà importare la componente decoder e SDK. Nel file settings.gradle è necessario aggiungere le seguenti informazioni (da cambiare a seconda della struttura delle directory del progetto):

include ':app'  
include ':dgc-sdk'  
include ':decoder'  
rootProject.name = "dgp-whitelabel-android"  
project(':dgc-sdk').projectDir = new File("../it-dgc-verificac19-sdk-android/sdk")  
project(':decoder').projectDir = new File("../dgca-app-core-android/decoder")

A questo punto è possibile inizializzare il workmanager (LoadKeysWorker) posizionato in it.ministerodellasalute.verificaC19sdk.worker.LoadKeysWorker che consente di sincronizzare le regole di validazione e i certificati di firma prima di iniziare ad utilizzare l'applicazione.

Tra i parametri restituiti dalle API REST, c'è la Minimum SDK Version.
Questo valore è confrontato con la versione corrente dell'SDK presente in BuildConfig.SDK_VERSION, tramite il metodo it.ministerodellasalute.verificaC19sdk.model.FirstViewModel#isSDKVersionObsoleted, in modo da garantire che la versione di SDK utilizzata non sia obsoleta e potenzialmente non valida. Nel caso in cui la versione di SDK utilizzata sia inferiore a quella restituita dalle API REST, l'SDK lancerà una VerificaMinSDKVersionException che potrebbe causare un crash dell'applicazione se non gestita correttamente.

A questo punto è possibile utilizzare una libreria di scansione di QR Code a scelta che, dopo aver letto un QR Code di un EU DCC, passi la stringa estratta a
it.ministerodellasalute.verificaC19sdk.model.VerificationViewModel#init.

Esempio:

try {  
    viewModel.init(args.qrCodeText)  
}  
catch (e: VerificaMinVersionException)  
{  
    Log.d("VerificationFragment", "Min Version Exception")  
    createForceUpdateDialog()  
}

Osservando la risposta del metodo, un Certificate object è restituito it.ministerodellasalute.verificaC19sdk.model.CertificateSimple che contiene il risultato della verifica. Il data model contiene i dati relativi alla persona, la data di nascita, il timestamp di verifica e lo stato della verifica.

Basandosi su questi dati è possibile disegnare la UI e fornire all'operatore lo stato della verifica del DCC.

Contribuzione

Ogni contributo è ben accetto. Prima di procedere è buona norma consultare il Code of Conduct per ottenere una aiuto relativamente alle modalità di approccio alla community. Inoltre è possibile consultare il file CONTRIBUTING che contiene le informazioni pratiche per assicurare una contribuzione efficace e efficiente.

Contributori

Qui c'è una lista di contributori. Grazie per essere partecipi nel miglioramento del progetto giorno dopo giorno!

Licenza

Autori / Copyright

Copyright 2021 (c) Ministero della Salute.

Il file AUTHORS contiene le informazioni sugli autori.

Dettaglio Licenza

La licenza per questo repository è una Apache License 2.0. All'interno del file LICENSE sono presenti le informazioni specifiche.

Comments
  • Green pass revocati ma accettati

    Green pass revocati ma accettati

    Buongiorno a tutti, per far verificare se il green pass letto è tra i revocati è necessario cambiare qualcosa nell'uso dell'sdk? Sto provando a leggere un certificato revocato e mi risulta valido con SDK 1.1.1 e non valido con VerificaC19. Cosa sto sbagliando? Grazie mille Saluti

    opened by giga89 10
  • Crash on startup

    Crash on startup

    Describe the bug Quando avvio l'app (che incorpora l'sdk) dopo un po si chiude e nel log degli errori vedo questo crash:

    E/AndroidRuntime: FATAL EXCEPTION: DefaultDispatcher-worker-2 Process: it.intesys.dolomitisuperski, PID: 12470 kotlinx.coroutines.CoroutinesInternalError: Fatal exception in coroutines machinery for CancellableContinuation(DispatchedContinuation[Dispatchers.IO, Continuation at it.ministerodellasalute.verificaC19sdk.data.VerifierRepositoryImpl$fetchCertificate$2.invokeSuspend(VerifierRepositoryImpl.kt:152)@842590c]){Completed}@6a9c255. Please read KDoc to 'handleFatalException' method and report this incident to maintainers at kotlinx.coroutines.DispatchedTask.handleFatalException(DispatchedTask.kt:144) at kotlinx.coroutines.DispatchedTask.run(DispatchedTask.kt:115) at kotlinx.coroutines.scheduling.CoroutineScheduler.runSafely(CoroutineScheduler.kt:571) at kotlinx.coroutines.scheduling.CoroutineScheduler$Worker.executeTask(CoroutineScheduler.kt:750) at kotlinx.coroutines.scheduling.CoroutineScheduler$Worker.runWorker(CoroutineScheduler.kt:678) at kotlinx.coroutines.scheduling.CoroutineScheduler$Worker.run(CoroutineScheduler.kt:665) Caused by: java.lang.StackOverflowError: stack size 1039KB

    (allego il full log perche' troppo lungo ma in realta' e' un loop)

    Smartphone (please complete the following information):

    • Device: [e.g. Samsung Galaxy S21 5G]
    • OS: [e.g. Android 12] crash_log.txt

    Grazie Alberto

    opened by albertocappellina 9
  • Certificato non valido

    Certificato non valido

    Ad integrazione della libreria completata, quando invio il qr code del mio green pass (valido), l'oggetto CertificateSimple è correttamente compilato coi miei dati anagrafici, ma l'oggetto CertificateStatus è valorizzato "NOT_VALID". Ho provato con l'app di verifica standalone VerificaC19 installata dall'App Store e il mio certificato è giustamente valido.

    opened by Y2JChamp 9
  • fix: check uvci and blacklist before signing certificate

    fix: check uvci and blacklist before signing certificate

    How to reproduce

    1. Try scan this testing certificate (from EU testing DCCs repository) with VerificaC19 for Android
    1. Try to scan it using VerificaC19 for iOS

    You'll get two different results! Only VerificaC19 for iOS correctly reads certificate's info saying that's not valid cause it's not signed by a trusted DSC. Current PR fixes this behaviour.

    opened by astagi 7
  • Salvataggio dati

    Salvataggio dati

    Apro questo ticket più per un dubbio, e questo mi sembra il posto giusto per trovare la risposta senza impazzire a leggere 100 documenti diversi. In pratica mi sembrava di aver letto qualche mese fa che non si può salvare la modalità con la quale si è scansionato un green pass perchè con quell'informazione si può risalire al tipo di green pass letto e quindi se ha il vaccino o tampone ecc... Oggi mi è stato posto il quesito e mi è venuta in mente questa cosa, però non ritrovo più il documento dove mi era capitato di leggerlo e quindi ho paura di essermelo inventato. Qualcuno sa rispondermi? Nel caso vi chiederei anche di condividere il link al documento in questione.

    opened by bobbysimon24 5
  • Crash su validazione certificato quando device non ha connessione

    Crash su validazione certificato quando device non ha connessione

    Quando l'app si avvia mentre il device è offline, la chiamata a verificationViewModel.init(payload) genera l'eccezione allegata. Nel caso l'app sia offline Realm.init(applicationContext) non viene mai chiamato, da qui l'errore. Ho verificato lo stesso comportamento sull'app VerificaC19 versione 1.2.0 E' un comportamento voluto? Significa che dobbiamo assicurarci che il device sia andato online almeno una volta durante la sessione di utilizzo per eseguire una validazione? Grazie per l'aiuto realmcrash.txt

    opened by salmattia 5
  • Realm crash con nuova versione

    Realm crash con nuova versione

    Buonasera,

    Scrivo perchè sto testando le nuove modifiche presenti in develop che dovranno essere promosse a release entro poco. Quando provo a validare un green pass in qualsiasi modalità mi va in crash realm, con questo messaggio: RevokedPass is not part of the schema for this Realm Sapete dirmi la causa? Documentandomi molto velocemente sembra che si risolva scambiando le dichiarazioni dei plug in nel build.gradle, ma mi sembra che sia già l'ordine giusto. Qualcuno ha avuto il problema?

    opened by bobbysimon24 4
  • Preferences SDK

    Preferences SDK

    Ciao a tutti, Aggiornando all'ultima versione delle SDK la mia app mi sono accorto che nelle preferenze non mi salva il valore "auth_to_resume", quindi non riesco a riprendere un download già iniziato e mi si blocca allo scarico dei dati, o almeno così mi sembra di capire. Qualcuno sa dirmi come mai non mi salva questo unico valore nelle preferenze? Ps: Ho provato a richiamare firstViewModel.setResumeAsAvailable() ma non cambia niente.

    opened by bobbysimon24 4
  • Differenti formati di data in CertificateSimple.kt in field dateOfBirth

    Differenti formati di data in CertificateSimple.kt in field dateOfBirth

    Issue content

    Salve,

    come da oggetto durante la validazione di diversi greenpass ho ricevuto diversi formati nel campo dateOfBirth dell'oggetto CertificateSimple.

    es:

    • yyyy-MM-dd
    • yyyy-MM-dd'T'HH:mm:ss
    • dd-MM-yyyy

    E' corretto ? Quali altri formati possono arrivare?

    Grazie mille Alberto

    opened by albertocappellina 4
  • Duplicate in VerificationViewModel

    Duplicate in VerificationViewModel

    Describe the bug Il metodo decode in VerificationViewModel contiene un codice duplicato relativo al settaggio di CertificateSimple, di conseguenza il flag scanMode non ha alcun effetto.

    Current state

                var certificateSimple = CertificateSimple()
    
                certificateSimple?.person?.familyName = certificateModel.person?.familyName
                certificateSimple?.person?.standardisedFamilyName =
                    certificateModel.person?.standardisedFamilyName
                certificateSimple?.person?.givenName = certificateModel.person?.givenName
                certificateSimple?.person?.standardisedGivenName =
                    certificateModel.person?.standardisedGivenName
                certificateSimple?.dateOfBirth = certificateModel.dateOfBirth
    
                if (certificateIdentifier == null || certificateIdentifier == "") {
                    certificateSimple?.certificateStatus = CertificateStatus.NOT_VALID
                } else if (blackListCheckResult == true) {
                    certificateSimple?.certificateStatus = CertificateStatus.NOT_VALID
                } else if (scanMode == "2G" && certificateModel.tests != null) {
                    certificateSimple.certificateStatus = CertificateStatus.NOT_VALID
                } else if (fullModel == false) {
                    if (getCertificateStatus(certificateModel) == CertificateStatus.NOT_VALID_YET) {
                        certificateSimple?.certificateStatus = CertificateStatus.NOT_VALID
                    }
                }
    
    //here a new setting of CertificateSimple that ocerrides the previous one
                val simpleCert = CertificateSimple()
                simpleCert.person?.familyName = certificateModel.person?.familyName
                simpleCert.person?.standardisedFamilyName =
                    certificateModel.person?.standardisedFamilyName
                simpleCert.person?.givenName = certificateModel.person?.givenName
                simpleCert.person?.standardisedGivenName =
                    certificateModel.person?.standardisedGivenName
                simpleCert.dateOfBirth = certificateModel.dateOfBirth
    
                if (isCertificateRevoked(certificateIdentifier.sha256())) {
                    VerificaApplication.isCertificateRevoked = true
                    simpleCert.certificateStatus = CertificateStatus.NOT_VALID
                } else {
                    if (!fullModel) {
                        when {
                            getCertificateStatus(certificateModel) == CertificateStatus.NOT_VALID_YET -> {
                                simpleCert.certificateStatus = CertificateStatus.NOT_VALID
                            }
                            getCertificateStatus(certificateModel) == CertificateStatus.PARTIALLY_VALID -> {
                                simpleCert.certificateStatus = CertificateStatus.VALID
                            }
                            else -> {
                                simpleCert.certificateStatus =
                                    getCertificateStatus(certificateModel)
                            }
                        }
                    } else {
                        simpleCert.certificateStatus = getCertificateStatus(certificateModel)
                    }
                }
    

    Expected behavior penso che dovrebbe essere qualcosa del tipo:

                var certificateSimple = CertificateSimple()
    
                certificateSimple?.person?.familyName = certificateModel.person?.familyName
                certificateSimple?.person?.standardisedFamilyName =
                    certificateModel.person?.standardisedFamilyName
                certificateSimple?.person?.givenName = certificateModel.person?.givenName
                certificateSimple?.person?.standardisedGivenName =
                    certificateModel.person?.standardisedGivenName
                certificateSimple?.dateOfBirth = certificateModel.dateOfBirth
    
                if (certificateIdentifier == null || certificateIdentifier == "") {
                    certificateSimple?.certificateStatus = CertificateStatus.NOT_VALID
                } else if (blackListCheckResult == true) {
                    certificateSimple?.certificateStatus = CertificateStatus.NOT_VALID
                } else if (scanMode == "2G" && certificateModel.tests != null) {
                    certificateSimple.certificateStatus = CertificateStatus.NOT_VALID
                } else if (fullModel == false) {
                    if (getCertificateStatus(certificateModel) == CertificateStatus.NOT_VALID_YET) {
                        certificateSimple?.certificateStatus = CertificateStatus.NOT_VALID
                    } else if (getCertificateStatus(certificateModel) == CertificateStatus.PARTIALLY_VALID) {
                        certificateSimple?.certificateStatus = CertificateStatus.VALID
                    } else {
                        certificateSimple?.certificateStatus = getCertificateStatus(certificateModel)
                    }
                } else { //show full model
                    certificateSimple?.certificateStatus = getCertificateStatus(certificateModel)
                }
    

    Ma non sono sicura di dove dovrebbe andare questa parte:

    if (isCertificateRevoked(certificateIdentifier.sha256())) {
                    VerificaApplication.isCertificateRevoked = true
                    simpleCert.certificateStatus = CertificateStatus.NOT_VALID
                }
    

    e

    else if (blackListCheckResult == true) {
                    certificateSimple?.certificateStatus = CertificateStatus.NOT_VALID
                }
    
    opened by NermeenSolaiman 4
  • [RESOLVED] Crash con Android 12 all'avvio del LoadKeysWorker

    [RESOLVED] Crash con Android 12 all'avvio del LoadKeysWorker

    Issue content

    Buonasera,

    come da oggetto all'avvio del worker LoadKeysWorker la nostra app crasha con il seguente errore

    Strongly consider using FLAG_IMMUTABLE, only use FLAG_MUTABLE if some functionality depends on the PendingIntent being mutable, e.g. if it needs to be used with inline replies or bubbles. at android.app.PendingIntent.checkFlags(PendingIntent.java:375) at android.app.PendingIntent.getBroadcastAsUser(PendingIntent.java:645) at android.app.PendingIntent.getBroadcast(PendingIntent.java:632) at androidx.work.impl.utils.ForceStopRunnable.getPendingIntent(ForceStopRunnable.java:273) at androidx.work.impl.utils.ForceStopRunnable.isForceStopped(ForceStopRunnable.java:151) at androidx.work.impl.utils.ForceStopRunnable.forceStopRunnable(ForceStopRunnable.java:171) at androidx.work.impl.utils.ForceStopRunnable.run(ForceStopRunnable.java:102) at androidx.work.impl.utils.SerialExecutor$Task.run(SerialExecutor.java:91) at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1167) at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:641) at java.lang.Thread.run(Thread.java:920)

    Cercando in rete questo problema sembra essere risolto da androidx.work:work-runtime-ktx:2.7.0-alpha05 tuttavia a questo punto il worker non viene piu' avviato, con questo messaggio di errore:

    E/WM-WorkerFactory: Could not instantiate it.ministerodellasalute.verificaC19sdk.worker.LoadKeysWorker java.lang.NoSuchMethodException: it.ministerodellasalute.verificaC19sdk.worker.LoadKeysWorker. [class android.content.Context, class androidx.work.WorkerParameters] at java.lang.Class.getConstructor0(Class.java:2363) at java.lang.Class.getDeclaredConstructor(Class.java:2201) at androidx.work.WorkerFactory.createWorkerWithDefaultFallback(WorkerFactory.java:95) at androidx.work.impl.WorkerWrapper.runWorker(WorkerWrapper.java:245) at androidx.work.impl.WorkerWrapper.run(WorkerWrapper.java:137) at androidx.work.impl.utils.SerialExecutor$Task.run(SerialExecutor.java:91) at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1167) at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:641) at java.lang.Thread.run(Thread.java:920) E/WM-WorkerWrapper: Could not create Worker it.ministerodellasalute.verificaC19sdk.worker.LoadKeysWorker

    Qualcuno è riuscito a risolvere questo problema ?

    opened by albertocappellina 4
  • Mancato rilascio per nuove direttive 1 Aprile 2022

    Mancato rilascio per nuove direttive 1 Aprile 2022

    Ciao, ma c'è una ragione per cui non è ancora stata rilasciata la nuova sdk in seguito alla fine dello stato di emergenza e ai nuovi regolamenti?

    Ho visto che ci sono dei commit relativi alla rimozione dei metodi di scan WORK e SCHOOL e nella mia app ho provveduto a impostare 3G nel caso fosse stata impostata quella modalità di scansione, ma vorrei sapere se ci sarà un nuovo rilascio oppure se dobbiamo gestircela noi lato nostro applicativo.

    Grazie.

    opened by loreberti89 2
  • I got a Italy Green Pass, it is verified from the German official App CovPass, but it is denied from VerificC19

    I got a Italy Green Pass, it is verified from the German official App CovPass, but it is denied from VerificC19

    Issue content

    I have an Italy Green Pass, and I decode the QR code, check the UVCI from https://get.dgc.gov.it/v1/dgc/settings; it is not on the blacklist. Then, I digest the UVCI, and check the records from https://get.dgc.gov.it/v1/dgc/drl, it is not on the list either,

    The owner had the booster dose (all of the doses are Spikevax and Vaxzevria), but unfortunately, he got sick a few days ago. The trick thing is, from the German official App CovPass, if you use the app to scan the code, it is verified with green; but if to use the Italian VerificC19, it shows the gree pass is denied with red.

    My question is, besides the above two blacklists, does the Italian app use any additional methods (or codes) to check the validity of a QR code?

    opened by yzhang666 2
  • Parametro SDK_MIN_VERSION(

    Parametro SDK_MIN_VERSION("sdk") assente sulle validation sule

    Salve.

    Stavo notando che sulle validation rule al momento è assente il parametro "sdk" per il check della versione della libreria.

    E' voluta come cosa ? Oppure è un'anomalia ?

    Grazie in anticipo.

    opened by a-bellezza 3
  • Confusione nei rilasci per quanto riguarda l'SDK soprattutto

    Confusione nei rilasci per quanto riguarda l'SDK soprattutto

    Buongiorno,

    segnalo una certa difficoltà nel mantenersi allineati con i frequenti rilasci che spesso sono molto poco documentati per cui non si riesce a valutare l'effettiva necessità di aggiornamento. Sarebbe molto utile a tutti noi se si spendesse qualche riga di descrizione sulle modifiche introdotte e si indicasse con chiarezza per ogni rilascio se è strettamente necessario allinearsi per rispettare la normativa vigente. Ad esempio sulla versione 1.2.3 sembrava quasi dal commento della commit che si trattasse di una modifica a livello di GUI.

    Sarebbe utile per ogni rilascio avere queste informazioni:

    • Breve descrizione delle ragioni del rilascio;
    • Se il rilascio è un aggiornamento mandatorio o meno;
    • Nel caso in cui fosse mandatorio la data a partire dalla quale deve essere reso disponibile;

    Grazie, Lamberto

    opened by lleoncavallo 6
  • Controllo sugli over 50

    Controllo sugli over 50

    Che piani avete sulla implementazione del controllo che andrà in vigore dal 15 di Febbraio 2022, e che prevede il green pass rafforzato per gli over 50 sui luoghi di lavoro? Sarà implementato a livello di SDK? Se si, in che modo? Grazie anticipatamente

    opened by anpplnk 5
Owner
Ministero della Salute
Ministero della Salute
Segmenkt - The SegmenKT Kotlin SDK is a Kotlin-first SDK for Segment

SegmenKT Kotlin SDK The SegmenKT Kotlin SDK is a Kotlin-first SDK for Segment. I

UNiDAYS 0 Nov 25, 2022
Frogo SDK - SDK Core for Easy Development

SDK for anything your problem to make easier developing android apps

Frogobox 10 Dec 15, 2022
HubSpot Kotlin SDK 🧺 Implementation of HubSpot API for Java/Kotlin in tiny SDK

HubSpot Kotlin SDK ?? Implementation of HubSpot API for Java/Kotlin in tiny SDK

BOOM 3 Oct 27, 2022
AWS SDK for Android. For more information, see our web site:

AWS SDK for Android For new projects, we recommend interacting with AWS using the Amplify Framework. The AWS SDK for Android is a collection of low-le

AWS Amplify 976 Dec 29, 2022
Countly Product Analytics Android SDK

Countly Android SDK We're hiring: Countly is looking for Android SDK developers, full stack devs, devops and growth hackers (remote work). Click this

Countly Team 648 Dec 23, 2022
Android Real Time Chat & Messaging SDK

Android Chat SDK Overview Applozic brings real-time engagement with chat, video, and voice to your web, mobile, and conversational apps. We power emer

Applozic 659 May 14, 2022
Evernote SDK for Android

Evernote SDK for Android version 2.0.0-RC4 Evernote API version 1.25 Overview This SDK wraps the Evernote Cloud API and provides OAuth authentication

Evernote 424 Dec 9, 2022
Air Native Extension (iOS and Android) for the Facebook mobile SDK

Air Native Extension for Facebook (iOS + Android) This is an AIR Native Extension for the Facebook SDK on iOS and Android. It has been developed by Fr

Freshplanet 219 Nov 25, 2022
Android Chat SDK built on Firebase

Chat21 is the core of the open source live chat platform Tiledesk.com. Chat21 SDK Documentation Features With Chat21 Android SDK you can: Send a direc

Chat21 235 Dec 2, 2022
Liquid SDK (Android)

Liquid Android SDK Quick Start to Liquid SDK for Android This document is just a quick start introduction to Liquid SDK for Android. We recommend you

Liquid 17 Nov 12, 2021
AWS SDK for Android. For more information, see our web site:

AWS SDK for Android For new projects, we recommend interacting with AWS using the Amplify Framework. The AWS SDK for Android is a collection of low-le

AWS Amplify 975 Dec 24, 2022
新浪微博 Android SDK

ReadMe 公告: 鉴于线上服务器出现问题,推荐下载本地aar后上传到自己公司的服务器,保证后续服务稳定, 我们也将尽快重新提供一个稳定的地址供大家使用。 新包地址:https://github.com/sinaweibosdk/weibo_android_sdk/tree/master/2019

SinaWeiboSDK 1.8k Dec 30, 2022
Free forever Marketing SDK with a dashboard for in-app SplashScreen banners with built-in analytics

AdaptivePlus Android SDK AdaptivePlus is the control center for marketing campaigns in mobile applications Requirements minSdkVersion 16 Examples prov

Adaptive.Plus 16 Dec 14, 2021
Official Appwrite Android SDK 💚 🤖

Appwrite Android SDK This SDK is compatible with Appwrite server version 0.8.x. For older versions, please check previous releases. Appwrite is an ope

Appwrite 62 Dec 18, 2022
This App is sending Face capture data over network, built around the latest Android Arcore SDK.

AndroidArcoreFacesStreaming From any Android phone ArCore compatible, using this app will send over TCP 5680 bytes messages: The first 5616 bytes is a

Maxime Dupart 30 Nov 16, 2022
Its measurement app made using kotlin with sceneform sdk by google

ARCORE MEASUREMENT This app is build using sceneform sdk for android using kotlin language It helps you measure the distance between multiple points i

Kashif Mehmood 39 Dec 9, 2022
A Notion SDK for Any JVM Language

Notion SDK for Any JVM Language A simple and easy to use client for the Notion API Here is an Notion API SDK for any JVM language users ?? This projec

Kazuhiro Sera 91 Dec 31, 2022
Trackingplan for Android SDK

With Trackingplan for Android you can make sure that your tracking is going as you planned without changing your current analytics stack or code.

Trackingplan 3 Oct 26, 2021
Desk360 Mobile Chat SDK for Android

Desk360 Chat Android SDK Introduction Desk360 Live Chat SDK is an open source Android library that provides live support to your customers directly fr

null 31 Dec 13, 2022