Android: альтернатива onSensorChanged? нет данных ACCELEROMETER, когда телефон лежит на спине на столе (когда нет движения) - PullRequest
2 голосов
/ 27 апреля 2011

Итак, я использую этот код для получения данных акселерометра.Когда я нахожусь в режиме 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());

}

Ответы [ 2 ]

3 голосов
/ 27 апреля 2011

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

1 голос
/ 19 июня 2011

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

...