Выборка сенсоров Android

Есть ли способ получить значения от датчика Android, скажем, каждые 5 минут?

Например, есть ли способ опрашивать датчик AMBIENT_TEMPERATURE каждые 5 минут независимо от изменения температуры или нет?

Прямо сейчас я могу получить доступ к значениям из onSensorChanged(SensorEvent arg0) только при его вызове, поэтому, если температура не изменилась с момента запуска, я никогда не смогу получить доступ к значению температуры?

Спасибо! знак равно


person corgichu    schedule 05.09.2012    source источник
comment
ты читал это? stackoverflow.com/questions/6985396/   -  person sschrass    schedule 08.09.2012


Ответы (2)


Насколько я помню, сеньоры возвращают значение каждое onSensorChanged-событие. Вы можете настроить поток, который считывает значения каждые 5 минут.

Изменить:

public class OrientationHandler implements SensorEventListener {
    private SensorManager sensorManager = null;
    private static float[] values = new float[3];

    public OrientationHandler(Context context) {
        sensorManager = (SensorManager) context
                        .getSystemService(Context.SENSOR_SERVICE);
        sensorManager.registerListener(this, sensorManager
                                       .getDefaultSensor(Sensor.TYPE_ORIENTATION),
                                       SensorManager.SENSOR_DELAY_FASTEST);
    }

    public void onSensorChanged(SensorEvent event) {
        if (event.sensor.getType() == Sensor.TYPE_ORIENTATION) {
            synchronized (this) {
                OrientationHandler.values = event.values;
            }
        }
    }
}

Доступ к OrientationHandler.values ​​можно получить извне класса (если вы напишете себе публичный Getter-метод).

person sschrass    schedule 07.09.2012
comment
да, но что это никогда не менялось, поэтому оно никогда не вызывается? Моя проблема заключается в получении первого значения. Я написал тестовое приложение, чтобы попробовать его, но не могу получить значение температуры окружающей среды, потому что onSensorChanged никогда не вызывали? - person corgichu; 08.09.2012
comment
сохраните значения в onSensorChanged (событие SensorEvent) в переменной класса, к которой можно получить доступ извне. - person sschrass; 08.09.2012
comment
поэтому onSensorChanged (событие SensorEvent) будет обновлять только эту переменную класса. - person sschrass; 08.09.2012
comment
о, теперь у меня есть твоя проблема. Проклятие. Здесь уже поздно. - person sschrass; 08.09.2012
comment
но я даже не добираюсь до onSensorChanged, поэтому нет возможности инициализировать эту переменную класса чем-нибудь полезным. Я только что прочитал ссылку, которую вы разместили, и да ... температура батареи была бы для меня довольно бесполезной. Спасибо за помощь! знак равно - person corgichu; 08.09.2012
comment
Вы пробовали что-то вроде Log.i(TAG, onSensorChanged был вызван) внутри onSensorChanged(), чтобы проверить, вызывается ли он изначально? Если это не будет вызвано, я бы зарегистрировал отчет об ошибке. - person sschrass; 08.09.2012

Вы можете попробовать использовать службу будильника, настроив ее повторение каждые пять минут.

Хотя я никогда не работал с датчиками, в любом случае я думаю, что есть какой-то способ получить значение датчика один раз.

Я предлагаю вам сначала прочитать это, а затем это, чтобы узнать, как установить повторяющийся сигнал тревоги, который на его широковещательном приемнике может обновить информацию о вашем датчике.

Надеюсь, это поможет =)

person Max Rasguido    schedule 07.09.2012