Android: Альтернатива Onsensorchanged? Нет данных об акселерометре, когда телефон лежит на спине на столе (когда нет движения)

StackOverflow https://stackoverflow.com/questions/5804142

Вопрос

Поэтому я использую этот код, чтобы получить данные акселерометра. Когда я нахожусь в режиме DDMS, чтобы проверить, что печатает мой оператор печати, я заметил, что ничего не напечатано, когда телефон не перемещается. т.е. это на столе. Я думаю, что причина в том, что onsensorchanged не вызывается, когда телефон не двигается, а затем его вызывают, когда телефон снова начинает двигаться. Если я хочу собирать данные независимо от того, движется ли телефон или нет, должен ли я использовать какую -то другую функцию? Какие -нибудь альтернативы? или любое решение? Любой помогает оценить.

Спасибо!

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());

}
Это было полезно?

Решение

Вы можете иметь одну ветку, прослушивая изменения датчика (т.е. onSensorChanged() это напишет данные в глобальные переменные) и в другой поток, запускающий таймер (посмотрите на postDelayed, http://developer.android.com/reference/android/os/handler.html) это будет читать его в установленное время. Если нет изменений, то он снова будет читать одни и те же данные. Легко, чистый и приятный для батареи.

Другие советы

Если этот метод вызывается только тогда, когда «датчик меняется», попробуйте сохранить значения, которые вы читаете при выполнении. Если метод не называется, это не означает, что значения одинаковы?

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top