Maybe last commit
- updated docs and improved readability - added recordings
This commit is contained in:
@@ -50,8 +50,6 @@ dependencies {
|
||||
|
||||
// YOUTUBE VIDEO
|
||||
|
||||
//compile 'org.eclipse.swt:org.eclipse.swt.win32.win32.x86_64:4.3' //Winzozz 64
|
||||
//compile 'org.eclipse.swt:org.eclipse.swt.gtk.linux.x86:4.3' //Linuzuzz 32
|
||||
//compile files('lib/SWT_linux32.jar')
|
||||
//compile files('lib/SWT_linux64.jar')
|
||||
compile files('lib/SWT_win64.jar')
|
||||
|
||||
@@ -21,19 +21,19 @@ import static spark.Spark.post;
|
||||
public class DialogFlowWebHook {
|
||||
|
||||
/**
|
||||
* Un logger per vedere le cose piu' easy
|
||||
* Un logger per ottenere messaggi sull'esecuzione del programma
|
||||
*/
|
||||
private static final Logger LOG = LoggerFactory.getLogger("WebHook");
|
||||
|
||||
/**
|
||||
* Stringa che viene usata se l'azione esiste ma lancia un qualche tipo di errore
|
||||
*/
|
||||
public static final String ACTION_ERROR = "Purtroppo chi mi ha programmato e' un pirla, non posso fare cio' che hai chiesto";
|
||||
public static final String ACTION_ERROR = "L'azione non è eseguibile";
|
||||
|
||||
/**
|
||||
* Errore che viene mostrato all'utente se l'azione inviata non corrisponde a nessuna di quelle inserite
|
||||
*/
|
||||
public static final String ERROR = "Non mi hanno imparato abbastanza per fare questo";
|
||||
public static final String ERROR = "Non posso eseguire nessuna azione di questo tipo";
|
||||
|
||||
/**
|
||||
* L'eventuale path successiva all'url dichiarato nel Webhook di Dialog-Flow
|
||||
@@ -70,7 +70,7 @@ public class DialogFlowWebHook {
|
||||
/**
|
||||
* Aggiunge un'azione ad una specifica richiesta di Dialog-Flow
|
||||
* @param actionId il nome dell'azione che viene passata da Dialog-Flow
|
||||
* @param action l'azione da fare (e' consigliato usare le espressioni lambda)
|
||||
* @param action l'azione da fare
|
||||
*/
|
||||
public void addOnAction(String actionId, Action action) { this.actions.put(actionId, action); }
|
||||
|
||||
@@ -136,7 +136,7 @@ public class DialogFlowWebHook {
|
||||
*/
|
||||
public interface Action {
|
||||
/**
|
||||
* Fai l'azione desiderata.
|
||||
* Fa l'azione desiderata.
|
||||
* Se ritorna una stringa allora il testo viene cambiato. Se ritorna null non cambia il testo
|
||||
*
|
||||
* @param params una mappa contenente tutti i parametri impostati da dialogflow
|
||||
|
||||
@@ -212,5 +212,4 @@ public class Fitbit {
|
||||
return String.format("%02d:%02d", hour, minu);
|
||||
}
|
||||
|
||||
// Device dev = auth.run(BASIC_URL + "devices.json", Device.class);
|
||||
}
|
||||
|
||||
@@ -21,12 +21,12 @@ public class Hue {
|
||||
private static final Logger LOG = LoggerFactory.getLogger("Hue");
|
||||
|
||||
/**
|
||||
* La luminopsita' massima a cui si puo' arrivare
|
||||
* La luminosita' massima a cui si puo' arrivare
|
||||
*/
|
||||
private static final int MAX_BRIGHTNESS = 254;
|
||||
|
||||
/**
|
||||
* Una mappa che ad ogni colore (in lingua ita) assegna il proprio valore in hue
|
||||
* Una mappa che ad ogni colore (in italiano) assegna il proprio valore in hue
|
||||
*/
|
||||
private static final Map<String, Double[]> COLORS = new HashMap<>();
|
||||
|
||||
@@ -45,7 +45,7 @@ public class Hue {
|
||||
*/
|
||||
private final AtomicDouble brightness = new AtomicDouble(0);
|
||||
|
||||
// Riempimento della mappa con i vari colori
|
||||
// Riempimento della mappa con i colori
|
||||
static {
|
||||
COLORS.put("giall[oae]", new Double[]{0.45, 0.45});
|
||||
COLORS.put("ross[oae]", new Double[]{0.7, 0.25});
|
||||
@@ -60,7 +60,7 @@ public class Hue {
|
||||
}
|
||||
|
||||
/**
|
||||
* Cerca le luci Philips Hue a ll'indirizzo <a href="http://172.30.1.138/api/C0vPwqjJZo5Jt9Oe5HgO6sBFFMxgoR532IxFoGmx/lights/">http://172.30.1.138/api/C0vPwqjJZo5Jt9Oe5HgO6sBFFMxgoR532IxFoGmx/lights/</a>
|
||||
* Cerca le luci Philips Hue all'indirizzo <a href="http://172.30.1.138/api/C0vPwqjJZo5Jt9Oe5HgO6sBFFMxgoR532IxFoGmx/lights/">http://172.30.1.138/api/C0vPwqjJZo5Jt9Oe5HgO6sBFFMxgoR532IxFoGmx/lights/</a>
|
||||
* @throws NullPointerException se non trova nessun bridge
|
||||
*/
|
||||
public Hue () throws NullPointerException { this("172.30.1.138", "C0vPwqjJZo5Jt9Oe5HgO6sBFFMxgoR532IxFoGmx"); }
|
||||
@@ -118,7 +118,7 @@ public class Hue {
|
||||
public void turnOff() { on(false); }
|
||||
|
||||
/**
|
||||
* Ritorna la liminosita' attuale delle luci controllate
|
||||
* Ritorna la luminosita' attuale delle luci controllate
|
||||
* @return il valore e' compreso tra 0 e 100
|
||||
*/
|
||||
public double getCurrentBrightness() { return brightness.doubleValue(); }
|
||||
@@ -163,7 +163,7 @@ public class Hue {
|
||||
public void increaseBrightness() { increaseBrightness(25); }
|
||||
|
||||
/**
|
||||
* Dinuisce la luminosita' delle luci controllate della percentuale che viene passata
|
||||
* Diminuisce la luminosita' delle luci controllate della percentuale che viene passata
|
||||
* @param percentage la percentuale di diminuzione della luminosita'
|
||||
*/
|
||||
public void decreaseBrightness(int percentage) {
|
||||
@@ -175,7 +175,7 @@ public class Hue {
|
||||
}
|
||||
|
||||
/**
|
||||
* Dinuisce la luminosita' delle luci controllate del 25%
|
||||
* Diminuisce la luminosita' delle luci controllate del 25%
|
||||
*/
|
||||
public void decreaseBrightness() { decreaseBrightness(25); }
|
||||
|
||||
@@ -192,7 +192,7 @@ public class Hue {
|
||||
|
||||
/**
|
||||
* Invia una richiesta a tutte le luci hue con l'attributo selezionato ed il suo valore<br>
|
||||
* Con esso invia anche una transition:20 in modo che sia piu fluido il cambiamento se si mette true al terzo parametro
|
||||
* Con esso invia anche un valore di transizione in modo che sia piu fluido il cambiamento se si mette true al terzo parametro
|
||||
* @param attribute l'attributo da modificare
|
||||
* @param value il valore da inserire
|
||||
* @param transition se includere la transizione o meno
|
||||
|
||||
@@ -7,7 +7,7 @@ import de.fh_zwickau.informatik.sensor.model.devices.DeviceList;
|
||||
import support.ZWaySimpleCallback;
|
||||
|
||||
/**
|
||||
* Sensore che permette di registrare vari dati dell'ambiente
|
||||
* Sensore che permette di registrare vari dati dell'ambiente (noi utilizziamo solo la luminosità)
|
||||
*/
|
||||
public class Sensor {
|
||||
|
||||
@@ -35,7 +35,8 @@ public class Sensor {
|
||||
*/
|
||||
private DeviceList allZWaveDevices;
|
||||
/**
|
||||
* I device che vengono selezionati e filtrati dall'utente (ovvero quelli che verranno usati per prendere i dati)
|
||||
* I device che vengono selezionati e filtrati dall'utente
|
||||
* (ovvero quelli che verranno usati per prendere i dati)
|
||||
*/
|
||||
private DeviceList devices;
|
||||
|
||||
|
||||
@@ -1,20 +1,20 @@
|
||||
package device.fitbitdata;
|
||||
|
||||
/**
|
||||
* Calsse che serve ad avere una data collegata al dato preso dal fitbit
|
||||
* Classe che serve ad avere una data collegata al dato preso dal fitbit
|
||||
*/
|
||||
public abstract class FitbitData {
|
||||
private long millisec = 0;
|
||||
|
||||
/**
|
||||
* Setta la data collegato al dato preso dal fitbit
|
||||
* Setta la data collegata al dato preso dal fitbit
|
||||
* @param millisec la data in millisecondi
|
||||
*/
|
||||
public void setDate(long millisec) { this.millisec = millisec; }
|
||||
|
||||
/**
|
||||
* Ricevi la data collegata al dato richiesto dal fitbit
|
||||
* @return la data in millisec
|
||||
* @return la data in millisecondi
|
||||
*/
|
||||
public long getDate() { return this.millisec; }
|
||||
}
|
||||
|
||||
@@ -7,7 +7,7 @@ import java.util.List;
|
||||
import java.util.Map;
|
||||
|
||||
/**
|
||||
* Classe per vedere il dato del battito cardiaco
|
||||
* Classe per vedere le informazioni sul battito cardiaco
|
||||
*/
|
||||
@JsonIgnoreProperties(ignoreUnknown = true)
|
||||
public class HeartRate extends FitbitData {
|
||||
|
||||
@@ -11,7 +11,7 @@ import java.util.List;
|
||||
import java.util.Map;
|
||||
|
||||
/**
|
||||
* Classe per i dati del sonno dell'utente
|
||||
* Classe per recuperare i dati del sonno dell'utente
|
||||
*/
|
||||
@JsonIgnoreProperties(ignoreUnknown = true)
|
||||
public class Sleep {
|
||||
|
||||
@@ -48,7 +48,7 @@ public class Steps extends FitbitData {
|
||||
|
||||
/**
|
||||
* Prendi i dati specifici dei passi
|
||||
* @return una lista contenente una mappa con delle ore e minuti ad un valore del
|
||||
* @return una lista contenente una mappa con delle ore e minuti ad un valore dei passi
|
||||
*/
|
||||
public List<Map<String, Object>> getStepsData() { return stepsData; }
|
||||
}
|
||||
|
||||
@@ -20,7 +20,7 @@ import java.util.regex.Pattern;
|
||||
public class SeniorAssistant {
|
||||
|
||||
/**
|
||||
* Un Logger per capire meglio quali pezzi vengono eseguiti e quali no.
|
||||
* Un Logger per seguire l'esecuzione del programma.
|
||||
*/
|
||||
public static final Logger LOG = LoggerFactory.getLogger("SeniorAssistant");
|
||||
|
||||
@@ -93,7 +93,7 @@ public class SeniorAssistant {
|
||||
/**
|
||||
* Prende gli argomenti nel formato "^-(?<name>[a-zA-Z]+)(::)?(?<argument>.*)$" e li inserisce in una mappa.
|
||||
* Se l'argomento non e' nel formato giusto lo ignora.
|
||||
* @param args un'array di stringhe contente i vari argomenti
|
||||
* @param args un array di stringhe contenente i vari argomenti
|
||||
* @return una mappa con key il nome dell'argomento (la parte prima del :: e dopo il meno) e come valore il valore di esso (la parte dopo ::)
|
||||
*/
|
||||
private static Map<String, String> getArgsMap(String[] args) {
|
||||
@@ -110,7 +110,7 @@ public class SeniorAssistant {
|
||||
}
|
||||
|
||||
/**
|
||||
* Funzione creata per gli argomenti che vengono passati in modo da evitare millemila try and catch
|
||||
* Funzione creata per gli argomenti che vengono passati in modo da evitare troppi try and catch
|
||||
* @param num la stringa da trasformare in numero
|
||||
* @return il numero trasformato, null se fallisce
|
||||
*/
|
||||
|
||||
@@ -37,7 +37,7 @@ public class VariousThreads {
|
||||
private final AtomicInteger cooldown = new AtomicInteger(0);
|
||||
|
||||
/**
|
||||
* La variabile per far partire della musica da Youtube
|
||||
* La variabile per far partire della musica
|
||||
*/
|
||||
private final Audio audio;
|
||||
|
||||
@@ -45,7 +45,7 @@ public class VariousThreads {
|
||||
* Costruttore
|
||||
*/
|
||||
public VariousThreads() {
|
||||
audio = new AudioFile(); // se si vuole solamente questo e non YT
|
||||
audio = new AudioFile(); // se si vuole solamente far partire una traccia tra quelle fornite e non Youtube
|
||||
// audio = System.getProperty("os.name").startsWith("Windows")? new Musich():new AudioFile();
|
||||
}
|
||||
|
||||
@@ -131,10 +131,10 @@ public class VariousThreads {
|
||||
}
|
||||
|
||||
/**
|
||||
* Gestione delle luci in modo che cambiano la luminosita' in base ai dati ricevuti dal sensore<br>
|
||||
* Gestione delle luci in modo che cambino la luminosita' in base ai dati ricevuti dal sensore<br>
|
||||
* Se l'utente pero' cambia il valore delle luci di sua volonta', il processo non modifichera' le luci per almeno un'ora.
|
||||
* @param lights le luci da controllare
|
||||
* @param sensor i sensori da cui porendere i dati
|
||||
* @param sensor i sensori da cui prendere i dati
|
||||
*/
|
||||
public void startHueAutoBrightness(final Hue lights, final Sensor sensor) {
|
||||
final int minute = 1;
|
||||
@@ -213,7 +213,7 @@ public class VariousThreads {
|
||||
|
||||
/**
|
||||
* Controlla che ad una certa ora si siano fatti abbastanza passi, ed in caso contrario avvisa tramite un messaggio vocale.<br>
|
||||
* E' possibile trasformarlo in controlla ogni X se si sono fatti dei movimenti o meno.
|
||||
*
|
||||
* @param database da dove vediamo se si sono fatti abbastanza passi
|
||||
*/
|
||||
public void startCheckSteps(final Database database) {
|
||||
@@ -252,7 +252,7 @@ public class VariousThreads {
|
||||
* ovvero se sono minori del minimo esso diventera' il minimo, stessa cosa con il massimo.
|
||||
* @param hour l'ora corrente (valore da 0 a 23)
|
||||
* @param minutes i minuti correnti (valore da 0 a 59)
|
||||
* @param sensorBright la liminosita' segnata dal sensore (valore da 0 a 100)
|
||||
* @param sensorBright la luminosita' segnata dal sensore (valore da 0 a 100)
|
||||
* @param minBrightness la luminosita' minima che si vuole avere (valore da 0 a 100)
|
||||
* @return un valore indicante quanta luminosita' si ha bisogno nell'ora indicata e con la luminosita' indicata
|
||||
*/
|
||||
@@ -273,7 +273,7 @@ public class VariousThreads {
|
||||
}
|
||||
|
||||
/**
|
||||
* Restuisce un thread che se fatto partire, esegue il runnable in un sub-thread alll'ora indicata ogni giorno<br>
|
||||
* Restuisce un thread che se fatto partire, esegue il runnable in un sub-thread all'ora indicata ogni giorno<br>
|
||||
* Il sotto thread lanciato avra' lo stesso nome, ma con un trattino e la data di lancio a seguito<br>
|
||||
* Se il thread viene interrotto non fa piu' partire il runnable e si ferma
|
||||
* @param runnable il runnable da lanciare
|
||||
|
||||
@@ -24,7 +24,7 @@ import java.util.Arrays;
|
||||
public class AuthFitbit {
|
||||
|
||||
/**
|
||||
* Un logger per rendere le cose semplici in caso di casini
|
||||
* Un logger per rendere più semplice il debug
|
||||
*/
|
||||
private static final Logger LOG = LoggerFactory.getLogger("Fitbit Auth");
|
||||
|
||||
@@ -43,7 +43,7 @@ public class AuthFitbit {
|
||||
private static final java.io.File DATA_STORE_DIR = new java.io.File(System.getProperty("user.home"), ".store/seniorAssistant");
|
||||
|
||||
/**
|
||||
* OAuth 2 scope.<br>
|
||||
* OAuth2 scope.<br>
|
||||
* Nel nostro caso sono le varie categorie dove si trovano le informazioni di cui abbiamo bisogno
|
||||
*/
|
||||
private static final String SCOPE[] = new String[]{"activity","heartrate","sleep","settings"};
|
||||
|
||||
@@ -8,12 +8,12 @@ public class OAuth2ClientCredentials {
|
||||
/**
|
||||
* Il valore dell' "API Key".
|
||||
*/
|
||||
public static final String API_KEY = "22CSTL"; //maybe togliere le virgolette
|
||||
public static final String API_KEY = "22CSTL";
|
||||
|
||||
/**
|
||||
* Il valore dell' "API Secret"
|
||||
*/
|
||||
public static final String API_SECRET = "ea2452013abd35609940ce5601960a08"; //maybe togliere le virgolette
|
||||
public static final String API_SECRET = "ea2452013abd35609940ce5601960a08";
|
||||
|
||||
/**
|
||||
* La porta per il "Callback URL".
|
||||
|
||||
@@ -6,7 +6,7 @@ package support.audio;
|
||||
public interface Audio {
|
||||
|
||||
/**
|
||||
* Fa partire una audio in base al nome di essa.<br>
|
||||
* Fa partire una traccia audio in base al nome di essa.<br>
|
||||
* Se un audio era gia' stato fatto partire esso viene fermato<br>
|
||||
* Il nome puo' variare in base all'implementazione: nome di file o nome da cercare su internet...
|
||||
* @param name la stringa per far partire la canzone
|
||||
@@ -22,7 +22,7 @@ public interface Audio {
|
||||
void playRandom(String name);
|
||||
|
||||
/**
|
||||
* Ferma l'ultimo che e' stato fatto partire
|
||||
* Ferma l'ultimo audio che e' stato fatto partire
|
||||
*/
|
||||
void stop();
|
||||
}
|
||||
|
||||
@@ -27,7 +27,7 @@ public class AudioFile implements Audio {
|
||||
private AudioStream lastIn = null;
|
||||
|
||||
/**
|
||||
* Serve per crearsi una mapp di tutte le canzoni
|
||||
* Serve per crearsi una mappa di tutte le canzoni
|
||||
*/
|
||||
private final static Map<String, File> files = getAllFiles(PATH_AUDIO);
|
||||
|
||||
|
||||
@@ -26,7 +26,6 @@ public class Musich implements Audio {
|
||||
private static final String API_URL = "https://www.googleapis.com/youtube/v3/search?";
|
||||
/**
|
||||
* La key necessaria per prendere i dati da youtube<br>
|
||||
* Tra l'altro l'ho presa a caso... quindi boh.
|
||||
*/
|
||||
private static final String KEY = "AIzaSyAYcQcX9P5btBTfgdwWwETNh_7jV20cQp0";
|
||||
|
||||
@@ -44,11 +43,9 @@ public class Musich implements Audio {
|
||||
*/
|
||||
public Musich() {
|
||||
/*
|
||||
* Viene mandato questo errore in console, pero' boh... solo ogni tanto:
|
||||
* Viene mandato questo errore in console:
|
||||
* Exception "java.lang.ClassNotFoundException: com/intellij/codeInsight/editorActions/FoldingData"while constructing DataFlavor for: application/x-java-jvm-local-objectref; class=com.intellij.codeInsight.editorActions.FoldingData
|
||||
* A volte ne tira tante, a volte nessuna.
|
||||
* Sta' di fatto che per quanto ne so non compromette il funzionamento.
|
||||
* Al massimo usare un logger che dice di ignorare questo errore nel log
|
||||
*/
|
||||
NativeInterface.initialize();
|
||||
NativeInterface.open();
|
||||
@@ -56,7 +53,7 @@ public class Musich implements Audio {
|
||||
}
|
||||
|
||||
/**
|
||||
* Serve ad avere una lista di id dei video che corrispondono alle keyword indicate nella ricerca
|
||||
* Serve ad avere una lista di id dei video che corrispondono alle keywords indicate nella ricerca
|
||||
* @param search la ricerca da fare su youtube
|
||||
* @param maxResult quanti risultati si vuole avere
|
||||
* @return una lista di id dei video che corrispondono alla ricerca
|
||||
@@ -87,7 +84,7 @@ public class Musich implements Audio {
|
||||
}
|
||||
|
||||
/**
|
||||
* Serve ad avere una lista di id dei video che corrispondono alle keyword indicate nella ricerca<br>
|
||||
* Serve ad avere una lista di id dei video che corrispondono alle keywords indicate nella ricerca<br>
|
||||
* La lista conterra' i primi 5 id dei video trovati.
|
||||
* @param search la ricerca da fare su youtube
|
||||
* @return una lista di id dei video che corrispondono alla ricerca
|
||||
@@ -97,8 +94,8 @@ public class Musich implements Audio {
|
||||
}
|
||||
|
||||
/**
|
||||
* Dato l'id di un video viene fatta partire un frame contenente il video richiesto<br>
|
||||
* Come al solito, youtube potrebbe far partire una pubblicita'... eh beh.
|
||||
* Dato l'id di un video viene fatto partire un frame contenente il video richiesto<br>
|
||||
* Come al solito, youtube potrebbe far partire una pubblicita'.
|
||||
* @param videoId l'id del video da far vedere
|
||||
* @param seconds da quanti secondi bisogna far partire il video
|
||||
*/
|
||||
@@ -127,8 +124,8 @@ public class Musich implements Audio {
|
||||
}
|
||||
|
||||
/**
|
||||
* Dato l'id di un video viene fatta partire un frame contenente il video richiesto<br>
|
||||
* Come al solito, youtube potrebbe far partire una pubblicita'... eh beh.
|
||||
* Dato l'id di un video viene fatto partire un frame contenente il video richiesto<br>
|
||||
* Come al solito, youtube potrebbe far partire una pubblicita'.
|
||||
* @param videoId l'id del video da far vedere
|
||||
*/
|
||||
public void play(final String videoId) {
|
||||
@@ -136,8 +133,8 @@ public class Musich implements Audio {
|
||||
}
|
||||
|
||||
/**
|
||||
* Serve a far partire un video a caso tra quelli che corrispondono alle keyword indicate nella ricerca<br>
|
||||
* Come al solito, youtube potrebbe far partire una pubblicita'... eh beh.
|
||||
* Serve a far partire un video a caso tra quelli che corrispondono alle keywords indicate nella ricerca<br>
|
||||
* Come al solito, youtube potrebbe far partire una pubblicita'.
|
||||
* @param search la ricerca da fare su youtube
|
||||
* @param maxResult fra quanti risultati deve scegliere
|
||||
*/
|
||||
@@ -146,9 +143,9 @@ public class Musich implements Audio {
|
||||
}
|
||||
|
||||
/**
|
||||
* Serve a far partire un video a caso tra quelli che corrispondono alle keyword indicate nella ricerca<br>
|
||||
* Serve a far partire un video a caso tra quelli che corrispondono alle keywords indicate nella ricerca<br>
|
||||
* Esso scegliera' fra i primi 5 risultati<br>
|
||||
* Come al solito, youtube potrebbe far partire una pubblicita'... eh beh.
|
||||
* Come al solito, youtube potrebbe far partire una pubblicita'.
|
||||
* @param search la ricerca da fare su youtube
|
||||
*/
|
||||
public void playRandom(String search) {
|
||||
@@ -158,7 +155,7 @@ public class Musich implements Audio {
|
||||
|
||||
/**
|
||||
* Ferma il video che e' in riprduzione in questo momento.<br>
|
||||
* Se non ce ne sono, amen... non fa nulla.
|
||||
* Se non ce ne sono non fa nulla.
|
||||
*/
|
||||
public void stop() {
|
||||
if(currentThread != null) {
|
||||
|
||||
@@ -31,7 +31,7 @@ public interface Database {
|
||||
* Inserisce nuovi dati del paziente nel database.
|
||||
* @param dateMilliSec la data che si vuole inserire in millisec
|
||||
* @param heartRate il battito cardiaco
|
||||
* @return vero se ha inserito o i dati esistevano gia' falso se non ce l'ha fatta
|
||||
* @return vero se ha inserito o i dati esistevano gia', falso se non ce l'ha fatta
|
||||
*/
|
||||
boolean updateHeart(long dateMilliSec, double heartRate);
|
||||
/**
|
||||
@@ -64,9 +64,9 @@ public interface Database {
|
||||
List<Steps> getStepDataOfLast(int days);
|
||||
|
||||
/**
|
||||
* Prendi il Thread che automaticamente gestisce l'inserimento dei dati orari (per ora solo il battito cardiaco)<br>
|
||||
* Prende il Thread che automaticamente gestisce l'inserimento dei dati orari (per ora solo il battito cardiaco)<br>
|
||||
* Se per caso c'e' un fallimento riprova ad inserire i dati ogni x minuti, indicati dal terzo parametro<br>
|
||||
* @param database il database in cui inserirlo
|
||||
* @param database il database in cui inserire i dati
|
||||
* @param fitbit la classe che contiene i dati aggiornati
|
||||
* @param retryMinutes ogni quanti minuti deve riprovare ad inviare la richiesta
|
||||
* @return un Thread
|
||||
@@ -99,7 +99,7 @@ public interface Database {
|
||||
/**
|
||||
* Prendi il Thread che automaticamente gestisce l'inserimento dei dati giornalieri, esso fara' i tentativi alle 23<br>
|
||||
* Se per caso c'e' un fallimento riprova ad inserire i dati ogni x minuti, indicati dal terzo parametro<br>
|
||||
* @param database il database in cui inserirlo
|
||||
* @param database il database in cui inserire i dati
|
||||
* @param fitbit la classe che contiene i dati aggiornati
|
||||
* @param retryMinutes ogni quanti minuti deve riprovare ad inviare la richiesta
|
||||
* @return un Thread da far partire
|
||||
|
||||
@@ -18,7 +18,7 @@ import java.util.List;
|
||||
public class LocalDB implements Database {
|
||||
|
||||
/**
|
||||
* Il percorso di dove trovare il database, strutturato in: <interfaccia>:<implementazione>:<percorso vero e proprio>
|
||||
* Il percorso dove trovare il database, strutturato in: <interfaccia>:<implementazione>:<percorso vero e proprio>
|
||||
*/
|
||||
public static final String DB_LOCATION = "jdbc:sqlite:";
|
||||
|
||||
@@ -90,10 +90,6 @@ public class LocalDB implements Database {
|
||||
public List<HeartRate> getHeartDataOfLast(int days) {
|
||||
try {
|
||||
int dayToSubtract = 15;
|
||||
// Calendar calendar = Calendar.getInstance();
|
||||
// calendar.setTimeInMillis(System.currentTimeMillis());
|
||||
// calendar.add(Calendar.DATE, -dayToSubtract);
|
||||
// long time = calendar.getTimeInMillis();
|
||||
long time = System.currentTimeMillis() - (dayToSubtract * 24 * 60 * 1000); // meno 24 ore per 60 secondi per 100 millisec
|
||||
|
||||
ResultSet result = conn.createStatement().executeQuery("SELECT * FROM heart WHERE day>='" + new Timestamp(time) + "'");
|
||||
|
||||
@@ -29,12 +29,12 @@ public class RemoteDB implements Database {
|
||||
*/
|
||||
public final String base_url;
|
||||
/**
|
||||
* L'username del nostro vecchio
|
||||
* L'username dell'utente
|
||||
*/
|
||||
public final String username;
|
||||
|
||||
/**
|
||||
* Inseredolo username e basta l'indirizzo a cui tentera' la connesione e' <a href="http://127.0.0.1:5000/api/">http://127.0.0.1:5000/api/</a>
|
||||
* Inseredo lo username e basta l'indirizzo a cui tentera' la connesione e' <a href="http://127.0.0.1:5000/api/">http://127.0.0.1:5000/api/</a>
|
||||
* @param username il nome utente assiociato per aggiornare i dati
|
||||
*/
|
||||
public RemoteDB(String username) {
|
||||
@@ -42,7 +42,7 @@ public class RemoteDB implements Database {
|
||||
}
|
||||
|
||||
/**
|
||||
* Costruttore che ha bisogno sia delo username che del url dper la connesione
|
||||
* Costruttore che ha bisogno sia dello username che dell'url per la connesione
|
||||
* @param username il nome utente assiociato per aggiornare i dati
|
||||
* @param base_url l'url a cui si punta per aggiornare/leggere i dati
|
||||
*/
|
||||
|
||||
BIN
src/main/resources/audio/molti battiti.wav
Normal file
BIN
src/main/resources/audio/molti battiti.wav
Normal file
Binary file not shown.
BIN
src/main/resources/audio/molti passi.wav
Normal file
BIN
src/main/resources/audio/molti passi.wav
Normal file
Binary file not shown.
BIN
src/main/resources/audio/pochi battiti.wav
Normal file
BIN
src/main/resources/audio/pochi battiti.wav
Normal file
Binary file not shown.
BIN
src/main/resources/audio/pochi passi.wav
Normal file
BIN
src/main/resources/audio/pochi passi.wav
Normal file
Binary file not shown.
Reference in New Issue
Block a user