1

Извлечь позиционирование из сообщений Java

Тема: Извлечь позиционирование из сообщений Java

Доброго времени суток.

Некоторое время пользовался RemoteAPI для получения сообщений от объектов. И не было никаких проблем smile
Как появился JavaAPI, решил переехать на него.
Но не могу понять как в нем можно получить координаты из сообщений. В объектах класса Message есть только метод getParameters, но в нем только кастомные поля. Видел, что в UnitData, который наследует Message есть метод getPosition, но не могу въехать как получить этот UnitData.

2

Извлечь позиционирование из сообщений Java

Re: Извлечь позиционирование из сообщений Java

Разобрался. Сделал каст

for(Message msg : messages)
  UnitData ud = (UnitData)msg;
3

Извлечь позиционирование из сообщений Java

Re: Извлечь позиционирование из сообщений Java

JohnAR пишет:

Разобрался. Сделал каст

for(Message msg : messages)
  UnitData ud = (UnitData)msg;

Да, только перед кастом добавьте проверку:

for(Message msg : messages)
   if (msg instanceof UnitData)
      UnitData ud = (UnitData)msg;
Mobile Development
Gurtam
4

Извлечь позиционирование из сообщений Java

(13/02/2014 16:15:03 отредактировано JohnAR)

Re: Извлечь позиционирование из сообщений Java

kopa пишет:

Да, только перед кастом добавьте проверку:

for(Message msg : messages)
   if (msg instanceof UnitData)
      UnitData ud = (UnitData)msg;

Точно! Спасибо.

Еще вопрос, немножко из другой оперы.

Запускаю поиск таким макаром:

SearchSpec searchSpec = new SearchSpec();
searchSpec.setItemsType(ItemType.avl_unit);
searchSpec.setPropName("sys_name");
searchSpec.setPropValueMask("*");
searchSpec.setSortType("sys_unique_id");
session.searchItems(searchSpec, forceRefresh, Item.dataFlag.base.getValue(), indexFrom,
                indexTo, new SearchResponseHandler() {

В ответе в объектах Unit лишь самые простые данные: имя и id в системе.
Ни телефонов, ни присвоенного imei нет. В этих полях везде стоит null.
Как нужно выполнять запрос, что бы получить все данные об этих объектах?

5

Извлечь позиционирование из сообщений Java

Re: Извлечь позиционирование из сообщений Java

JohnAR пишет:

Еще вопрос, немножко из другой оперы.

Запускаю поиск таким макаром:

SearchSpec searchSpec = new SearchSpec();
searchSpec.setItemsType(ItemType.avl_unit);
searchSpec.setPropName("sys_name");
searchSpec.setPropValueMask("*");
searchSpec.setSortType("sys_unique_id");
session.searchItems(searchSpec, forceRefresh, Item.dataFlag.base.getValue(), indexFrom,
                indexTo, new SearchResponseHandler() {

В ответе в объектах Unit лишь самые простые данные: имя и id в системе.
Ни телефонов, ни присвоенного imei нет. В этих полях везде стоит null.
Как нужно выполнять запрос, что бы получить все данные об этих объектах?

Подавайте в функцию

searchItems(SearchSpec searchSpec, int forceRefresh, long dataFlags, int indexFrom, int indexTo, SearchResponseHandler callback)

параметром dataFlags флаги включающие нужные вам данные. Для удобства все флаги вынесены в константы класса Item и его наследников.
Флаги для Item - http://sdk.wialon.com/javadoc/com/wialo … aFlag.html
Флаги для Unit - http://sdk.wialon.com/javadoc/com/wialo … aFlag.html
Так же в Java API на данный момент реализованны не все свойства производных классов Item, так что возможно придется разбирать ответ сервера самостоятельно.

Mobile Development
Gurtam
6

Извлечь позиционирование из сообщений Java

Re: Извлечь позиционирование из сообщений Java

kopa пишет:
JohnAR пишет:

Еще вопрос, немножко из другой оперы.

Запускаю поиск таким макаром:

SearchSpec searchSpec = new SearchSpec();
searchSpec.setItemsType(ItemType.avl_unit);
searchSpec.setPropName("sys_name");
searchSpec.setPropValueMask("*");
searchSpec.setSortType("sys_unique_id");
session.searchItems(searchSpec, forceRefresh, Item.dataFlag.base.getValue(), indexFrom,
                indexTo, new SearchResponseHandler() {

В ответе в объектах Unit лишь самые простые данные: имя и id в системе.
Ни телефонов, ни присвоенного imei нет. В этих полях везде стоит null.
Как нужно выполнять запрос, что бы получить все данные об этих объектах?

Подавайте в функцию

searchItems(SearchSpec searchSpec, int forceRefresh, long dataFlags, int indexFrom, int indexTo, SearchResponseHandler callback)

параметром dataFlags флаги включающие нужные вам данные. Для удобства все флаги вынесены в константы класса Item и его наследников.
Флаги для Item - http://sdk.wialon.com/javadoc/com/wialo … aFlag.html
Флаги для Unit - http://sdk.wialon.com/javadoc/com/wialo … aFlag.html
Так же в Java API на данный момент реализованны не все свойства производных классов Item, так что возможно придется разбирать ответ сервера самостоятельно.


Почему-то подставновка флагов из dataFlags не срабатывает.
Т.к. пытался подставить такие флаги:

private long searchFlags = Item.dataFlag.base.getValue()
            | Item.dataFlag.messages.getValue() 
            | Item.dataFlag.customFields.getValue()
            | Item.dataFlag.guid.getValue();

Но в ответе было опять не то, что нужно.

Поэтому подставил флаги, используя справку отсюда http://sdk.wialon.com/wiki/ru/sidebar/r … ormat/unit
использовал (0x00000001 | 0x00000040 | 0x00000100) = 321

После чего получил все нужные данные в объекте. Ручной разбор не понадобился.

7

Извлечь позиционирование из сообщений Java

Re: Извлечь позиционирование из сообщений Java

JohnAR пишет:

Почему-то подставновка флагов из dataFlags не срабатывает.
Т.к. пытался подставить такие флаги:

private long searchFlags = Item.dataFlag.base.getValue()
            | Item.dataFlag.messages.getValue() 
            | Item.dataFlag.customFields.getValue()
            | Item.dataFlag.guid.getValue();

Но в ответе было опять не то, что нужно.

Поэтому подставил флаги, используя справку отсюда http://sdk.wialon.com/wiki/ru/sidebar/r … ormat/unit
использовал (0x00000001 | 0x00000040 | 0x00000100) = 321

После чего получил все нужные данные в объекте. Ручной разбор не понадобился.

Не те константы взяли:

0x1 | 0x40 | 0x100 == Item.dataFlag.base.getValue() | Item.dataFlag.guid.getValue() | Unit.dataFlag.restricted.getValue() == 0x141 == 321
Mobile Development
Gurtam
8

Извлечь позиционирование из сообщений Java

Re: Извлечь позиционирование из сообщений Java

Доброй ночи.

Пытаюсь получить сообщения используя функцию
public void loadLast(long itemId,
            long lastTime,
            int lastCount,
            long flags,
            long flagsMask,
            int loadCount,
            MessagesResponseHandler callback)
Что именно нужно подставлять в flag и flagsMask?

9

Извлечь позиционирование из сообщений Java

Re: Извлечь позиционирование из сообщений Java

В зависимости от того, какие сообщения хотите получить. Тут есть описание запроса и параметров.

Mobile Development
Gurtam
10

Извлечь позиционирование из сообщений Java

(25/02/2016 22:31:13 отредактировано ivankir)

Re: Извлечь позиционирование из сообщений Java

Спасибо, с сообщениями разобрался.

Возникла другая проблема
не могу получить дополнительные свойства объекта, а именно DeviceTypeId(), хотя флаги подставлял и
Unit.dataFlag.restricted.getValue()  и  0x141, 321 . Все равно выводит null

11

Извлечь позиционирование из сообщений Java

Re: Извлечь позиционирование из сообщений Java

ivankir, возможно у Вашего пользователя недостаточно прав на просмотр дополнительных свойств этого объекта.
При входе этим пользователем в Wialon для данного объекта виден тип оборудования?

Head of Wialon Local Department
Gurtam
12

Извлечь позиционирование из сообщений Java

(26/02/2016 19:01:17 отредактировано ivankir)

Re: Извлечь позиционирование из сообщений Java

С этим проблем быть не должно, к каждому объекту имею полный доступ


Обновил токен и проблема решилась.