Я сбор данных в моем Android приложения, как следует (это урезанная версия):данные Android датчика потерян
public class Main extends Activity {
...
public void log5secs(){
try {
CollectData collectData = new CollectData(this);
// collect data for five seconds in the background
Thread.sleep(5000);
Log.d("unregister", "gyro from Main: "+collectData.gyroscopeResults.size());
fingerprint.finish();
} catch (InterruptedException e) {
e.printStackTrace(); //To change body of catch statement use File | Settings | File Templates.
}
}
}
public class CollectData implements SensorEventListener {
ArrayList<SensorEvent> gyroscopeResults = new ArrayList<SensorEvent>();
public CollectData(Context context){
sensorManager = (SensorManager) context.getSystemService(Context.SENSOR_SERVICE);
gyroscope = sensorManager.getDefaultSensor(Sensor.TYPE_GYROSCOPE);
sensorManager.registerListener(this, gyroscope, SensorManager.SENSOR_DELAY_NORMAL);
}
public void onSensorChanged(SensorEvent event) {
gyroscopeResults.add(event);
Log.d("SensorChanged", "gyro results size: "+gyroscopeResults.size());
}
public void finish(){
unregister();
}
private void unregister() {
Log.d("Unregister", "gyro results size before unregister: "+gyroscopeResults.size());
sensorManager.unregisterListener(this);
}
}
Таким образом, сообщения журнала показывают, что каждый раз, когда onSensorChanged событие называется, размер ArrayList увеличивается (доходит до 26 за пять секунд).
Однако, когда размер запрашивается из Main или из-за того, что вызывается unregister(), размер ArrayList равен нулю. В отладчике я не вижу, где он изменяется.
Что случилось с моими данными ???
Я запускаю его на HTC Sensation XL.
ОБНОВЛЕНИЕ: Получил дополнительную информацию! Из любопытства я сделал гироскоп ArrayListResults статическим полем в классе Main. Эффект был интересен - во второй раз, когда запись была сделана, результаты первого были видны (но не в первый раз). Я предполагаю, что это означает, что первичный поток заканчивается до того, как данные датчика записываются - какая-то проблема буферизации ???
Фантастично, я пробую это сейчас ... Я не могу наградить щедрость до завтра из-за ограничений, однако спасибо за этот ответ. – Alex
Добро пожаловать, рад, что он сработал для вас – iTech
Хорошо, реализовано с помощью таймера! Это работает :) Еще раз спасибо. – Alex