Страница 1 из 1

API Android

СообщениеДобавлено: Декабрь 13th, 2012, 2:48 pm
collaur
Начиная с версии программы 2.0.3191 (Android) ПРОГОРОДу можно посылать события "показать точку на карте" и построить маршрут".
Если ПРОГОРОД не запущен - он стартует и выполняет команду.
Если ПРОГОРОД запущен - он становится активным и выполняет команду.

Есть ситуации, когда ПРОГОРОД не может выполнить команду:
  1. Если он не готов выполнять команды, например:
    1. Нет активных карт.
    2. Активно окно загрузки карт.
    3. Если идёт построение маршрута.
  2. Если он не загрузился в режим готовности принятия команд в течение 10 секунд после запуска.

Запуск происходит по "обычной" схеме, с вопросами о демо-периоде, предупреждениями, вопросом о продолжении маршрута. Это надо учитывать, т.к. все эти действия могут потребовать более 10 секунд.

При запросе на показ точки на карте ПРОГОРОД переключается (если надо) в показ главного окна, перемещает карту и показывает "каплю" в нужной точке. После этого он остается в режиме, как будто пользователь сам переместил карту в это положение. Т.о. позиция машины не нарушается, а, в случае ведения по маршруту, через время автовозврата (если разрешен автовозврат) карта вернется к ведению по маршруту.

Если приходит запрос на прокладку маршрута, а у ПРОГОРОДа уже есть маршрут - пользователя спрашивают, согласен ли он удалить текущий маршрут. Построение маршрута происходит в стандартном окне построения маршрута, с последующей возможностью выбора стратегий.

Если в момент прихода команды построения маршрута ПРОГОРОД уже находился в окне построения маршрута, сначала происходит возврат на карту. Здесь оптимизации умышленно нет.

Приёмник команд ПРОГОРОДа показывает сообщения об ошибках в первичной обработке команд (если они были) стандартным всплывающим окном (toast). Этих сообщений не должно быть в рабочей ситуации, но они могут быть полезными разработчикам при отладке.
0. Общая часть
Код: Выделить всё
       Intent intent = new Intent();
       intent.setAction("com.cdcom.naviapps.progorod.VIEW");  // команда ПОКАЗАТЬ
// или:
       intent.setAction("com.cdcom.naviapps.progorod.ROUTE"); // команда ПОСТРОИТЬ МАРШРУТ
       intent.addCategory("android.intent.category.DEFAULT"); // эта строчка не обязательна
... // здесь подготовить параметры (см. ниже)
       sendBroadcast(intent); // послать команду

1. Через uri geo
Код: Выделить всё
       final String params = new String("geo:55.35563,37.424264");
       intent.setData(Uri.parse(params));

Uri geo содержит широту и долготу (в этом порядке), разделенные запятыми.

2. Через передачу массива точек (extra с именем "points")
Ожидается массив double четной длины, содержащий набор пар значений (широта,долгота) для точек. Если команда ПОКАЗАТЬ, то на карте показывается только первая точка. Если команда - ПОСТРОИТЬ МАРШРУТ, то, если на входе:
  1. Одна точка - построить маршрут от позиции машины в неё.
  2. Две точки - построить маршрут из первой точки во вторую. Если первая точка имеет обе координаты 0, то она игнорируется, и маршрут строится от позиции машины.
  3. Более двух точек: первые две - старт и финиш (см. №2), третья и остальные точки являются промежуточными точками маршрута. Всего используется не более 10 промежуточных точек.
Код: Выделить всё
       double[] points = new double[6];
       points[0] = 55.35563;
       points[1] = 37.424264;               // старт
       points[2] = 55.+45./60.+ 8.17/3600.;
       points[3] = 37.+36./60.+13.6/3600.;  // финиш
       points[4] = 55.+43./60.+ 2.63/3600.;
       points[5] = 37.+32./60.+13.90/3600.; // промежуточная точка
       intent.putExtra("points", points);

Re: API Android

СообщениеДобавлено: Декабрь 13th, 2012, 11:30 pm
VasAlex
Как понимаю эта информация для разработчиков, которая под ПРОГОРОД будет писать свои приложения.
Мне интересно, кто это будет делать и зачем? :?
Например, IGO Primo умеет встраиваться в контакты Андроида. Что нужно сделать или где почитать инфу, чтобы адреса из контактов открывались Прогородом?