DroidScript
DroidScript
учимся и разрабатываем

Интерфейс для работы со встроенными датчиками

01.02.2017

Объект сенсора создаётся с помощью конструктора CreateSensor:

app.CreateSensor( (str) type, (str) options )

Параметры:

  • type - тип датчика:
    • Acceleration - трёхосевой датчик линейного ускорения, возвращающий показатели ускорения без учёта силы тяжести. Это виртуальный датчик, использующий показания акселерометра.
    • Accelerometer - ускорение в пространстве по осям X, Y, Z, включая силу тяжести, возвращающий значения в м/c2
    • GameRotation - поворота
    • GeomagneticRotation - вращения в магнитном поле
    • Gravity - трёхосевой датчик силы тяжести, возвращающий значение в м/c2. Как правило, это виртуальный датчик с низкочастотным фильтром для показаний, возвращаемых акселерометром
    • Gyroscope - трёхосевой гироскоп, возвращающий текущее положение устройства в пространстве в рад/c по трём осям
    • HeartRate - пульса
    • Humidity - датчик относительной влажности, возвращающий значение в процентах
    • Light - освещённости (используется для динамического изменения яркости экрана)
    • MagneticField - датчик геомагнитного поля, определяющий текущие показатели магнитного поля в микротеслах по трём осям
    • Motion - движения
    • Orientation - датчик ориентации (компас). Измеряет повороты, наклоны и вращение устройства в градусах
    • Pressure - датчик атмосферного давления (барометр), возвращающий текущее давление в миллибарах. Можно определять высоту над уровнем моря, путём сравнения атмосферного давления в двух точках. Также барометры могут применяться для прогнозирования погоды.
    • Proximity - датчик приближенности, который сигнализирует о расстоянии между устройством и целевым объектом в сантиметрах. Используется для обнаружения расстояния между устройством и ухом пользователя для автоматического регулирования яркости экрана или выполнения голосовой команды. В некоторых устройствах возвращает два значения - близко или далеко
    • Rotation - положения устройства в пространстве в виде угла относительно оси. Виртуальный датчик, берущий показания от акселерометра и гироскопа
    • StepDetector - обнаружения движения
    • StepCounter - количества шагов
    • Temperature - температуры в градусах Цельсия
  • options - скорость работы:
    • 'Fast' - быстро
    • 'Fastest' - самая быстрая
    • 'Medium' - средняя
    • 'Slow' - медленная (по умолчанию)

Базовый пример

Выполнить в DS

Методы:

  • GetAzimuth():float - возвращает величину азимута

  • GetNames():[str] - возвращает названия всех сенсоров устройства

  • GetPitch():float - возвращает угол тангажа - поворота вокруг оси x (-90..90)

  • GetRoll():float - возвращает угол крена - поворота вокруг оси y (-90..90)

  • GetType():str - возвращает тип объекта

  • GetValues():[] - возвращает массив с 4 значениями. Последнее значение(с индекстом 3) является время имзмерения. В зависимости от датчика количество измеренных значений отличается и для получения правильного результата необходимо обращаться к соответствующим элементам данного массива

    myObject.GetType(); // возвращает "Sensor"

  • SetMaxRate( int rate ) - ограничивает количество событий при перемещении ползунка путём задания минимального интервала в мс между двумя событиями onTouch:

    myObject.SetValue( 1000 ); // события onTouch происходят не чаще одного в секунду

  • SetMinChange( float min ) - задаёт минимальный интервал отклика на реакцию

    myObject.SetMinChange( 0.5 );

  • SetOnChange( callback ) - задаёт ФОВ для задания действий при изменении значений датчика. В зависимости от датчика система передаёт в функцию разные параметры:

    • Компас:
      • float azimuth - азимут, градус (0..359). 0=Север, 90=Восток, 180=Юг, 270=Запад
      • float pitch - угол поворота вокруг оси x, градус (-180 .. 180)
      • float roll - угол поворота вокруг оси y, градус (-90ы..90)
    • Ускорения:
      • float x - значение ускорения по оси x, м/c2
      • float y - значение ускорения по оси y, м/c2
      • float z - значение ускорения по оси z, м/c2
    • Освещённости
      • int lux - величина освещённости, люкс
    • Магнитного поля:
      • float value - уровень магнитного поля, микротесла

    myObject.SetOnChange( function(){ app.ShowPopup( 'Значение изменилось' )} );

  • Start() - запускает работу сенсора

  • Stop() - останавливает работу сенсора
© 2016-2024 
actech