Esistono approcci fattibili per gestire i dati provenienti da dispositivi con orologi inaffidabili?
Abbiamo un sistema di database in esecuzione su un server centrale. L'ultima aggiunta al sistema è un sacco di scanner di codici a barre mobili con Android. Stiamo creando un'app specifica e i dispositivi saranno completamente bloccati in modo che l'utente possa interagire solo con questa app (quindi non accedere a nessuna impostazione).
Nel complesso è molto semplice, i dispositivi si connetteranno utilizzando una dock Ethernet e scaricheranno un elenco di elementi da spostare insieme alle loro destinazioni. L'utente esegue la scansione degli articoli nella destinazione e raccoglie una firma per la consegna. Una volta connesso al dock, verrà aggiornata la posizione di tutti gli elementi consegnati, insieme alla firma e al timestamp della mossa.
Il piano era che l'app avrebbe impostato l'orologio del dispositivo dall'ora del server ogni volta che era collegato al dock. Purtroppo, Android non consente alle app di impostare l'ora (l'autorizzazione SET_TIME
è consentita solo per le app di sistema). Inoltre, la rete è incredibilmente bloccata, quindi non possiamo fare affidamento sulla sincronizzazione integrata, e i dispositivi hanno solo una connessione di rete quando sono ancorati nella base Ethernet in ogni caso.
Quindi, dato che i dispositivi potrebbero avere orologi arbitrariamente non corretti, c'è un modo in cui possiamo correggerli quando i dati vengono caricati? Sarebbe possibile tenere un registro sul server dell'orologio per ogni dispositivo ogni volta che viene connesso.
In molti modi questo problema potrebbe essere applicato a qualsiasi applicazione con funzionalità offline. Che cosa fai con i dati relativi al tempo da un dispositivo con un orologio inaffidabile o non affidabile?
Non è troppo difficile correggere un tempo costantemente non corretto, ma sembra del tutto impossibile se si considera che il dispositivo potrebbe perdere completamente il tempo se la batteria si scarica. Un problema simile si presenta per un dispositivo non affidabile - se l'utente può cambiare l'orologio arbitrariamente.
Sono state effettuate ricerche su questo problema?