Android: Alternativa a onSensorChanged? nessun dati dell'accelerometro quando il telefono è sdraiato sulla schiena su un tavolo (quando nessun movimento)
-
24-10-2019 - |
Domanda
Così sto usando questo codice per ottenere i dati accelerometro. Quando sono in modalità DDMS per verificare cosa sta stampando la mia dichiarazione di stampa, ho notato che nulla viene stampato quando il telefono non si muove. vale a dire. è sul tavolo. Credo che il motivo è che onSensorChanged non viene chiamato quando il telefono non si muove, e quindi la sua chiamata quando il telefono inizia a muoversi di nuovo. Se voglio la raccolta dei dati indipendentemente dal fatto che il telefono è in movimento o no, devo usare qualche altra funzione? Eventuali alternative? o Qualsiasi soluzione? Qualsiasi aiuta apprezzato.
Grazie!
public void onSensorChanged(SensorEvent event) {
StringBuffer buff = new StringBuffer();
buff.append(String.valueOf(event.timestamp));
buff.append(comma);
buff.append(String.valueOf(event.values[0]));
buff.append(comma);
buff.append(String.valueOf(event.values[1]));
buff.append(comma);
buff.append(String.valueOf(event.values[2]));
mCurrentFile.println(buff.toString());
mCurrentFile.write(buff.toString()+ '\n');
System.out.println( "**" + buff.toString());
}
Soluzione
Si può avere un ascolto filo ai cambiamenti del sensore (ad esempio, onSensorChanged()
che scriverà i dati in variabili globali) e un altro thread in esecuzione di un timer (sguardo a postDelayed
, http://developer.android.com/reference/android/os/Handler.html ) che lo leggerà ad orari prestabiliti. Se non ci sono cambiamenti, allora sarà letto di nuovo gli stessi dati. Facile, pulito, bello e alla batteria.
Altri suggerimenti
Se questo metodo viene chiamato solo quando "i cambiamenti del sensore", provare a salvare i valori che si leggono quando è eseguito. Se il metodo non viene chiamato ciò non significa che i valori sono gli stessi?