Как получить список датчиков на android-устройстве

На каждом андроид-телефоне имеются датчики – сенсоры. Одни регистрируют параметры окружающей среды – температуру, давление, освещенность. Другие определяют положение устройства в пространстве, или относительно магнитных полюсов.

Сенсоры делятся на аппаратные – акселерометр, гироскоп, датчик магнитного поля; и виртуальные, которые комбинируют или фильтруют данные с аппаратных датчиков.

Перечень и назначение основных сенсоров:

Sensor Type Description Common Uses
TYPE_ACCELEROMETER Аппаратное обеспечение Измеряет силу ускорения в м/с2, которое придается устройству на всех трех физических осях (x, y и z), в том числе силу тяжести. Обнаружение движения (тряска, наклон и т.д.).
TYPE_AMBIENT_TEMPERATURE Аппаратное обеспечение Измеряет температуру в градусах Цельсия (° C). Смотрите примечание ниже. Мониторинг температуры воздуха.
TYPE_GRAVITY Программное или аппаратное обеспечение Измеряет силу тяжести в м/с2, которая действует на устройство на всех трех физических осях (x, y, z). Обнаружение движения (тряска, наклон и т.д.).
TYPE_GYROSCOPE Аппаратное обеспечение Измеряет скорость вращения устройства в rad/s вокруг каждой из трех физических осей (x, y и z). Обнаружение вращения устройства
TYPE_LIGHT Аппаратное обеспечение Измеряет уровень окружающего света (освещения) в lx. Управление яркостью экрана.
TYPE_LINEAR_ACCELERATION Программное или аппаратное обеспечение Измеряет силу ускорения в м/с2, которое придается устройству на всех трех физических осях (x, y и z), за исключением силы тяжести. Определение ускорения вдоль одной оси.
TYPE_MAGNETIC_FIELD Аппаратное обеспечение Измеряет силу окружающего геомагнитного поля для всех трех физических осей (x, y, z) в μT. Создание компаса.
TYPE_ORIENTATION Программное обеспечение Измеряет градус вращения устройства вокруг всех трех физических осей (x, y, z). По состоянию на уровне API 3 вы можете получить матрицы наклона и вращения для устройства с помощью датчика гравитации и датчика геомагнитного поля в сочетании с методом getRotationMatrix(). Определение позиции устройства.
TYPE_PRESSURE Аппаратное обеспечение Измеряет давление окружающего воздуха в гПа или мбар. Мониторинг изменения давления воздуха.
TYPE_PROXIMITY Аппаратное обеспечение Измеряет близость объекта в см относительно экрана устройства. Этот датчик обычно используется для определения телефона возле уха человека. Позиция телефона во время разговора.
TYPE_RELATIVE_HUMIDITY Аппаратное обеспечение Измеряет относительную влажность в процентах (%). Мониторинг точки росы, абсолютной и относительной влажности воздуха.
TYPE_ROTATION_VECTOR Программное или аппаратное обеспечение Измеряет ориентацию устройства, предоставляя три элемента вектора поворота устройства. Обнаружения движения и вращения.
TYPE_TEMPERATURE Аппаратное обеспечение Измеряет температуру устройства в градусах Цельсия (° C).
*Эта реализация датчика варьируется от устройств и этот датчик был заменен датчиком TYPE_AMBIENT_TEMPERATURE в API уровня 14
Мониторинг температуры.

Для получения полного списка датчиков, имеющихся на вашем устройстве, можно использовать метод getSensorList класса SensorManager. Просто создайте приложение с таким кодом активити и запустите его:

import android.app.ListActivity;
import android.content.Context;
import android.hardware.Sensor;
import android.hardware.SensorManager;
import android.os.Bundle;
import android.widget.ArrayAdapter;

import java.util.ArrayList;
import java.util.List;

public class SensorsActivity extends ListActivity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);

        SensorManager sensorManager = (SensorManager) getSystemService(Context.SENSOR_SERVICE);
        List<Sensor> listSensor = sensorManager.getSensorList(Sensor.TYPE_ALL);

        List<String> listSensorType = new ArrayList<>();
        for (int i = 0; i < listSensor.size(); i++) {
            listSensorType.add(listSensor.get(i).getName());
        }

        setListAdapter(new ArrayAdapter<>(this,
                android.R.layout.simple_list_item_1, listSensorType));
        getListView().setTextFilterEnabled(true);
    }
}

Источники: http://goo.gl/rJSJ9M https://goo.gl/rYBsvW

Додати коментар