D-Bus-сервис для управления эмуляцией местоположения
Сервис позволяет управлять эмуляцией местоположения. Подробнее…
Шина: | сессионная |
Служба: | ru.omp.GeoclueEmulationManagement |
Объект: | /ru/omp/GeoclueEmulationManagement |
Интерфейс: | ru.omp.GeoclueEmulationManagement |
Методы
- goToPositionOnTrack(int index)
- loadTrack(variant[] positions)
- pauseTrack()
- resumeTrack()
- setAltitude(double altitude)
- setLatitude(double latitude)
- setLongitude(double longitude)
- setPosition(double latitude, double longitude, double altitude)
- setTrackIntervalMode(bool useDefaultInterval)
- setTrackLooped(bool looped)
- setTrackSpeed(int speed)
- startTrack()
- stopTrack()
Подробное описание
Сервис позволяет управлять эмуляцией местоположения: устанавливать координаты и настраивать GPS-трек. Эта функциональность эмулятора предназначена для экспертов.
Примеры использования D-Bus-сервиса с помощью вызова утилиты dbus-send
:
-
Установка новой текущей позиции (широты, долготы, высоты):
dbus-send --session --type=method_call --print-reply --dest=ru.omp.GeoclueEmulationManagement /ru/omp/GeoclueEmulationManagement ru.omp.GeoclueEmulationManagement.setPosition double:-1.1 double:54.2345 double:100
-
Запуск движения по загруженному GPS-треку:
dbus-send --session --type=method_call --print-reply --dest=ru.omp.GeoclueEmulationManagement /ru/omp/GeoclueEmulationManagement ru.omp.GeoclueEmulationManagement.startTrack
-
Переход к позиции на загруженном GPS-треке:
dbus-send --session --type=method_call --print-reply --dest=ru.omp.GeoclueEmulationManagement /ru/omp/GeoclueEmulationManagement ru.omp.GeoclueEmulationManagement.goToPositionOnTrack int32:12
Взаимодействие Аврора IDE и эмулятора для эмуляции местоположения и датчиков устроено не только через службы D-Bus, но и с помощью передачи сообщений по WebSockets.
Утилита dbus-send
не поддерживает параметры методов в виде массивов и объектов variant
.
Поэтому для загрузки треков необходимо использовать другой способ, например, отправить сообщение
по WebSockets на порт 1234 следующего формата:
session serviceName objectPath interfaceName methodName methodArguments
Например:
session ru.omp.GeoclueEmulationManagement /ru/omp/GeoclueEmulationManagement ru.omp.GeoclueEmulationManagement loadTrack array:array:double:1.1,2.2,30,1000;2,3,4,2000;10,11,12,1000;0,1,3,1000;22,33,44,2000;70,111,121,1000
Здесь array:array:double
означает, что метод принимает массив массивов действительных чисел.
Далее перечислены загружаемые точки GPS-трека.
Точкой с запятой отделяются точки на треке, а только запятыми отделяются широта, долгота, высота
и интервал конкретной точки.
Описание методов
void goToPositionOnTrack(int index)
Меняет текущую позицию на GPS-треке на позицию по переданному индексу
в списке предзагруженных позиций.
index
— индекс позиции в списке позиций, загруженных методом loadTrack()
.
После смены текущей позиции на треке движение будет приостановлено (будет выставлена пауза).
Если переданный индекс имеет значение меньшее, чем 0, то D-Bus-метод вернёт ошибку.
void loadTrack(variant[] positions)
Загружает GPS-трек для дальнейшей эмуляции движения по нему.
positions
— список из элементов-точек GPS-трека, где каждая точка (variant
) — это массив,
содержащий 4 вещественных числа:
- широту (
latitude
); - долготу (
longitude
); - высоту (
altitude
); - интервал от предыдущей до данной позиции в миллисекундах (
interval
).
Таким образом, positions
— это массив из массивов чисел, где каждый элемент содержит 4 числа.
void pauseTrack()
Ставит движение по GPS-треку на паузу. Если движение по GPS-треку не производится, то метод ничего не делает.
void resumeTrack()
Возобновляет движение по GPS-треку, если оно приостановлено. Если движение по GPS-треку выполняется в данный момент или движение остановлено полностью, то метод ничего не делает.
void setAltitude(double altitude)
Устанавливает новое значение высоты над уровнем моря в метрах.
Диапазон допустимых значений: [-1000:10000]
.
void setLatitude(double latitude)
Устанавливает новое значение широты в градусах.
Диапазон допустимых значений: [-90:90]
.
void setLongitude(double longitude)
Устанавливает новое значение долготы в градусах.
Диапазон допустимых значений: [-180:180]
.
void setPosition(double latitude, double longitude, double altitude)
Устанавливает новые значения широты и долготы в градусах, а также высоты над уровнем моря в метрах.
Диапазон допустимых значений широты: [-90:90]
.
Диапазон допустимых значений долготы: [-180:180]
.
void setTrackIntervalMode(bool useDefaultInterval)
Устанавливает режим использования временных интервалов между точками GPS-трека.
useDefaultInterval
— true
, если необходимо использовать интервал между точками
по умолчанию (2 секунды), false
— если нужно использовать интервалы,
указанные в списке загруженных позиций трека.
void setTrackLooped(bool looped)
Делает движение по GPS-треку зацикленным.
looped
— true
, если трек необходимо зациклить, в противном случае — false
.
void setTrackSpeed(int speed)
Устанавливает скорость движения по GPS-треку.
speed
— множитель скорости движения.
Диапазон допустимых значений: [1:5]
.
void startTrack()
Запускает эмуляцию движения по загруженному GPS-треку.
Если GPS-трек не был загружен или движение по GPS-треку уже выполняется, то метод ничего не делает.
Если движение по GPS-треку приостановлено (стоит на паузе), то метод продолжает движение по треку.
Если движение по GPS-треку остановлено полностью (вызван stopTrack()
),
то метод начинает движение по треку сначала.
void stopTrack()
Полностью останавливает движение по GPS треку. Если движение по GPS-треку не производится, то метод ничего не делает.