Приложения для андроид для навигации: Лучшие программы для GPS навигации на Android

Содержание

8 лучших бесплатных автономных приложений GPS для Android для навигации в любом месте

Мы уже знаем, что есть много отличных приложений для навигации, когда у вас есть подключение для передачи данных. Но что, если вам нужно ваше местоположение GPS, когда вы не в сети?

Автономный GPS является жизненно важной функцией для любого приложения карт. Вы будете использовать его, если вы исследуете чужой город и у вас отключен роуминг данных, или если вы едете в мертвую зону во время поездки.

Вот лучшие бесплатные офлайн приложения GPS для Android.

1. Карты Google

Карты Google предлагают способ загрузки и сохранения региональных карт для автономного использования — вам просто нужно немного подготовиться, прежде чем уйти из дома.

Чтобы скачать карту, нажмите на Больше меню (три горизонтальные линии) в верхнем левом углу, затем выберите Оффлайн Карты. Google порекомендует вам загрузить несколько карт в зависимости от того, где вы находитесь, и из-за часто посещаемых вами мест. Вы также можете нажать Выберите свою карту скачать другую область.

Максимальный размер загружаемой карты составляет 2 ГБ, что соответствует примерно 200 х 120 миль. Приложение автоматически удаляет все загруженные карты через 30 дней без подключения к интернету.

Дополнительные советы можно найти в основных советах Google Maps по планированию поездки.

Скачать: Карты Google (бесплатно)

2. Sygic GPS-навигация и автономные карты

Sygic — это самое популярное автономное приложение GPS в магазине Google Play. Компания имеет соглашение с TomTom, позволяющее предоставлять автономные карты для каждой страны в мире.

Другие интересные функции включают бесплатные обновления карт, голосовую навигацию GPS и пешеходную GPS-навигацию, когда вы находитесь на ноге.

Приложение может даже помочь сэкономить ваши деньги. Если у вас есть интернет-соединение, оно автоматически предупредит вас о самых дешевых близлежащих парковках и заправках, а также предоставит информацию о предстоящих камерах контроля скорости.

Sygic предлагает как бесплатную, так и платную версию. При первой загрузке приложения вы можете попробовать платную версию в течение семи дней.

Скачать: GPS-навигация Sygic и автономные карты (бесплатно, доступна подписка)

3. OsmAnd

OsmAnd — еще одно популярное картографическое приложение, которое работает в автономном режиме. Существует также онлайн-режим для случаев, когда у вас есть надежное соединение для передачи данных.

GPS-часть приложения имеет ряд ключевых функций. Они включают в себя голосовое управление, навигацию по полосе, предполагаемое время прибытия в реальном времени, режим экрана «день / ночь», маршруты движения на лету, когда вы делаете неправильный поворот, и специальные велосипедные маршруты.

В некоторых странах автономная карта может похвастаться такими особенностями, как время открытия и принятые способы оплаты магазинов. Наконец, это приложение, которое лыжники должны иметь. Есть платный плагин, который показывает карты маршрутов для многих из самых популярных курортов мира.

Скачать: OsmAnd (бесплатная, премиум-версия доступна)

4. MAPS.ME

MAPS.ME — это полное бесплатное приложение GPS. Если вам нужна автономная навигация, ее обязательно стоит проверить.

В автономном режиме вы можете пользоваться полнофункциональной функцией поиска, голосовой навигацией, подсчетом маршрутизации и общественным транспортом. Вы также увидите рестораны, банкоматы и достопримечательности. Если вы находитесь в Интернете, вы можете поделиться своим местоположением с друзьями, добавить закладки и даже забронировать отель, не выходя из приложения. Это делает его отличным Android-приложением для путешествий

,

Карты обновляются OpenStreetMap и полностью открыты.

Разработчики приложения также дали обещание. Все карты и функции будут бесплатными навсегда; нет планов по внедрению структуры ценообразования. MAPS.ME поддерживается рекламой, и вы можете заплатить за их удаление.

Скачать: MAPS.ME (бесплатно)

5. MapFactor GPS навигационные карты

MapFactor — еще одно отличное бесплатное приложение GPS для Android.

Когда вы запускаете приложение в первый раз, оно предложит вам загрузить карты для автономного использования. Это потому, что здесь нет функции онлайн-карты. Вместо этого приложение предлагает более 200 отдельных карт на выбор, в том числе 56 в Европе и 53 в Америке.

Карты организованы по странам, но в густонаселенных районах имеются субрегионы. Вы также можете найти карты для камер контроля скорости в определенных областях. Каждая карта извлекает свои данные из OpenStreetMap.

Скачать: MapFactor (бесплатная, премиум-версия доступна)

6. ЗДЕСЬ.

ЗДЕСЬ WeGo — еще одно приложение, которое специализируется на автономной GPS-навигации. Он предлагает автономные карты для более чем 100 стран.

Оффлайн карты включают в себя маршруты, цены на проезд в общественном транспорте, цены на совместное использование автомобилей, а также расписание поездов и автобусов.

Когда вы вводите свой маршрут, приложение будет сравнивать автомобильные, велосипедные, пешеходные, такси и маршруты общественного транспорта, чтобы найти самый быстрый и экономически эффективный способ совершить путешествие. Это даже даст вам знать, в основном ли ваша поездка в гору или в гору.

Вы можете получить доступ к информации об общественном транспорте для более чем 1300 городов по всему миру, включая большую часть Северной Америки и Европы.

Как и MAPS.ME, приложение HERE WeGo поддерживается рекламой.

Скачать: ЗДЕСЬ WeGo (бесплатно)

7. CoPilot GPS

Автомобильная навигация является основным направлением CoPilot GPS. Люди пешком должны избегать этого.

Приложение выделяется в планировании маршрута. Для каждого путешествия это дает вам три варианта. И для каждого из трех маршрутов вы можете добавить до 52 отдельных путевых точек.

CoPilot также имеет тысячи офлайн-мест, таких как отели, рестораны, банкоматы и достопримечательности. Вы можете использовать функцию поиска, чтобы найти их, даже если вы находитесь в автономном режиме.

Вы можете воспользоваться бесплатной семидневной пробной версией премиум-функций. К ним относятся 3D-карты и аудио навигационный помощник. По истечении пробного периода приложение ограничивает вас 2D-картами в автономном режиме и визуальными пошаговыми инструкциями.

Скачать: CoPilot GPS (бесплатно, доступна подписка)

8. Карты гения

Бесплатная версия Genius Maps позволяет загружать автономные карты и предоставляет информацию о местных достопримечательностях.

Если вам нужны голосовые подсказки, автоматическая переадресация, оповещения об ограничении скорости и отчеты о трафике в реальном времени, вам необходимо выполнить обновление до профессиональной версии. Вы можете сделать это из приложения.

Карты Genius имеют автономные карты, доступные для большей части мира. Европа и Северная Америка пользуются 100-процентным охватом.

Скачать: Карты Genius (бесплатно)

GPS отличный, но следите за своим аккумулятором!

Мы надеемся, что эти приложения GPS помогут вам добраться туда, куда вы идете, даже без данных. Но мы оставим вам небольшое предупреждение: непрерывно работающие приложения GPS в фоновом режиме быстро разряжают вашу батарею.

Если вы идете, старайтесь как можно больше отключить GPS. Если вы за рулем, вам следует подумать о приобретении автомобильного зарядного устройства, которое является важным аксессуаром для смартфона, который необходимо хранить в автомобиле.

Мы рассмотрели, как сохранить заряд батареи на Android

если вы хотите узнать больше.

ТОП-10 приложений для автомобильных навигационных систем на базе Android


Имея за пазухой целый ворох искрометных идей о том, как реализовать весь потенциал своего авто, водители спотыкаются о ограниченность технологической начинки. У кого-то штатная магнитола не поддерживает современные мультимедийные стандарты, а кто-то даже с наличием CarPlay или Android Auto постоянно про себя повторяет: «Мне этого мало» – и с залихватским энтузиазмом берут кронштейн для телефона и скачивают приложения с Play Маркета, лишаясь при этом возможности использовать сам телефон непосредственно.


Наша навигационная система AirTouch Performance – полностью автономная среда и не зависит от работы телефона. Это отдельный блок с уже готовым Android, который полностью готов к загрузке любых приложений. Подробнее с системой вас ознакомит видеоролик ниже.



Специально для тех, кто уже посетил Киберкар и установил наш флагман мы подготовили подборку из 10 приложений, которые помогут реализовать потенциал столь гибкого устройства. Давайте же начнем!



10. MultiGo


Ссылка на приложение



Утилита помогает найти водителю ближайшую заправочную станцию. Приложение выдает максимально подробные данные об АЗС, включая местоположение, цены и даже отзывы других водителей. Информация обновляется постоянно, а в глобальной базе приложения забиты не только всем известные «Роснефть», «Лукойл», Газпромнефть и т.д., но даже малоизвестные заправочные станции.


Вместе с основной информацией, приложение также предоставляет второстепенную, вроде различных услуг: автомойки, СТО, магазины, кафе и т.д.


9. GPS Антирадар (или «Антирадар Стрелка»)


Ссылки на приложения:
GPS Антирадар
Стрелка



Максимально полезное в нынешних реалиях приложение, которое поможет определить местоположение радаров, камер фото- и видеорегистраторов. Приложение реагирует характерным сигналом, когда скорость движения автомобиля превышает заданный норматив.


Зачастую мы рекомендуем нашим клиентам, в случае, если у них уже стоит Android 7 версии и выше пользоваться «Двойным экраном», на который можно спроецировать сразу два приложения. Часто это бывает навигационное приложение в связке с антирадаром.


8. Где мойка?


Ссылка на приложение



В случае, когда машину нужно привести в порядок, а излюбленного адреса нет, то приложение «Где мойка?» подскажет не только местоположение ближайших организаций, то также цены, рейтинг и как добираться. В отличие от навигационных программ, где все мойки разом просто не могут быть выведены, утилита предоставляет информацию из актуальной базы.


Также имеется возможность забронировать желаемое время и вымыть машину максимально удобным способом.


7. Спасатель.Рядом (Первая помощь)


Ссылка на приложение



Сидя за рулем, в первую очередь нужно позаботиться о сохранности себя и своих близких. Если же несчастный случай все-таки произошел, на помощь придет обученный персонал. И чтобы помощь была максимально оперативной рекомендуем установить данное приложение, которое позволит вызвать квалифицированного человека.


Спасатель.Рядом – это целое сообщество неравнодушных людей, которые в любую минуту готовы помочь. Ну, а мы, в свою очередь, рекомендуем вам соблюдать все техники безопасности при вождении и быть осторожными.


6. 2ГИС


Ссылка на приложение



Любой топ с навигационными программами не обходится без данного справочника. Отличительной его особенностью является возможность пользоваться справочной информацией даже без прямого подключения к сети. Достаточно скачать базу, которая кропотливо распределена разработчиками и нанесена на удобную карту, и вы никогда не зададитесь вопросом: «А куда это я попал?»


База 2ГИС наполнена детальной информация о торговых центрах, различных заведения и культурных достопримечательностей. С помощью 2ГИС можно планировать свой маршрут.

Приложение также можно использовать как добротный навигатор.


5. izi.Travel гид-путеводитель


Ссылка на приложение



Незаменимый помощник в случае, если вы приехали в незнакомый вам город с экскурсионными целями. Мало того, что помогает экономить на порой некомпетентных экскурсоводах, так еще и покажет обязательный к ознакомлению маршрут. Многие из озвученных монологов информативны и полезны, но не всегда исполнены в профессиональной озвучке.


4. Яндекс.Музыка


Ссылка на приложение



Далеко не всегда приходится по душе автомобилистам однообразная музыка, которую сутками крутят по радиостанциям. На помощь приходят музыкальные сервисы и на территории СНГ самым популярным из них является Яндекс.Музыка.


В первую очередь, это удобный музыкальный сервис, который подбирает музыку специально под интересы пользователя. Если вы поклонник определенного жанра, то каждый день Я.М будет формировать для вас уникальный плейлист, который не даст заскучать даже в самой длинной пробке.


Не знаете, что лайкать для подбора уникальных композиций? Выберите жанр в разделе «Радио», и сервис безустанно будет транслировать композиции, которые можно отметить сердечком для дальнейшего подбора. В приложении также есть плейлисты под настроение и многое-многое другое.


3. Литрес: Слушай (или Storytel)


Ссылка на приложение
(Литрес)
Ссылка на приложение (Storytel)



Идеальное решение для тех, кто скучает по тихим вечерам за чтением художественной прозы или какого-нибудь популярного нон-фикшн. Думаем, что многие согласятся с тем, что мы тратим уйму времени, пребывая в дороге. И дабы провести его максимально продуктивно, рекомендуем воспользоваться данными информационными кладезями.


Оба сервиса весьма разношерстны и насчитывают огромное количество книг, озвученные профессиональными дикторами и дифференцированы по жанрам, стилям и т.д. Также они могут достаточно точно определить ваши предпочтения и предоставить наиболее подходящие произведение.


Отличие: Storytell – сервис с помесячной оплатой (первые две недели бесплатно). Литрес – библиотека с разовой покупкой, а также возможностью прослушать отрывок книги.


2. Лайм HD TV (или TV+ HD)


Ссылка на приложение (Лайм HD TV)
Ссылка на приложение (TV+ HD)



Два аналогичных приложения, в которых представлен огромный перечень российских телеканалов, многие из которых транслируются в формате HD. Наиболее пригодные утилиты для тех, кто любит находиться в информационной повестке или быть в курсе многих спортивных событий.


Детей в дороге можно развлечь детским контентом, а в период долгого простоя можно спокойно уединиться и посмотреть любимый сериал.


Минуc заключается в отсутствии региональных настроек. Все телеканалы ориентированы на МСК (UTC+4).


1. Яндекс.Навигатор


Ссылка на приложение



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


Взаимодействовать с поисковиком можно при помощи Яндекс.Алисы и голосового ввода. Приложение может найти для вас места для парковок и оперативно оплатить их онлайн (действует в крупных городах). Также навигатор может предупреждать о наличии камер и регистраторов, а также позволяет настроить маршруты типа «Работа-Дом» и т.д. А с учетом того, что Яндекс.Навигатор умеет работать в режиме оффлайн (необходимо подгрузить карты) – цены этому приложению нет. Определенный «маст хэв» в любом автомобиле!



Стоит оговориться, что в данный топ не вошли такие приложения, как YouTube, Google Maps и другие утилиты, связанные с компанией Google, так как они уже предустановлены в автомобиль, кроме разве что «YouTube Детям», которую мы так же рекомендуем если не хотите видеть скучающее чадо.


Другие приложения – которых вагон и маленькая тележка – мы оставим на следующий материал, а пока сохраняйте данный топ в закладки и открывайте предоставленные ссылки. И помните, что вместе с AirTouch Performance автомобиль можно прокачать как угодно, все зависит от фантазии пользователя!

Навигация в Android-приложении с помощью координаторов / Блог компании TINKOFF / Хабр

За последние несколько лет мы выработали общие подходы создания Android-приложений. Чистая архитектура, архитектурные шаблоны (MVC, MVP, MVVM, MVI), шаблон “репозиторий” и другие. Однако до сих пор нет общепринятых подходов к организации навигации по приложению. Сегодня я хочу поговорить с вами о шаблоне “координатор” и возможностях его применении в разработке Android-приложений.

Шаблон “координатор” часто используется в iOS-приложениях и был представлен Сорушем Ханлоу (Soroush Khanlou) с целью упростить навигацию по приложению. Есть мнение, что работа Соруша основана на подходе Application Controller, описанном в книге Patterns of Enterprise Application Architecture Мартином Фаулером (Martin Fowler).

Шаблон “координатор” призван решить следующие задачи:

  • борьба с Massive View Controller проблемой (о проблеме уже писали на хабре — прим. переводчика), которая зачастую проявляется с появлением God-Activity (активити с большим количеством обязанностей).
  • выделение логики навигации в отдельную сущность
  • переиспользование экранов приложения (активити/фрагментов) благодаря слабой связи с логикой навигации

Но, прежде чем начать знакомство с шаблоном и попробовать его реализовать, давайте взглянем на используемые реализации навигации в Android-приложениях.

Логика навигации описана в активити/фрагменте

Поскольку Android SDK требует Context для открытия новой активити (или FragmentManager для того, чтобы добавить фрагмент в активити), довольно часто логику навигации описывают непосредственно в активити/фрагменте. Даже примеры в документации к Android SDK используют этот подход.

class ShoppingCartActivity : Activity() {  
  override fun onCreate(b : Bundle?){
    super.onCreate(b)
    setContentView(R.layout.activity_shopping_cart)
    val checkoutButton = findViewById(R.id.checkoutButton)
    checkoutButton.setOnClickListener {
      val intent = Intent(this, CheckoutActivity::class.java)
      startActivity(intent)
    }
  }
}

В приведенном примере навигация тесно связана с активити. Удобно ли тестировать подобный код? Можно было бы возразить, что мы можем выделить навигацию в отдельную сущность и назвать ее, к примеру, Navigator, который может быть внедрен. Давайте посмотрим:

class ShoppingCartActivity : Activity() {
  @Inject lateinit var navigator : Navigator  
  override fun onCreate(b : Bundle?){
    super.onCreate(b)
    setContentView(R.layout.activity_shopping_cart)
    val checkoutButton = findViewById(R.id.checkoutButton)
    checkoutButton.setOnClickListener {
      navigator.showCheckout(this)
    }
  }
}
class Navigator {
   fun showCheckout(activity : Activity){
    val intent = Intent(activity, CheckoutActivity::class.java)
    activity.startActivity(intent)
  }
}

Получилось неплохо, но хочется большего.

Навигация с MVVM/MVP

Начну с вопроса: где бы вы расположили логику навигации при использовании MVVM/MVP?

В слое под презентером (назовем его бизнес-логикой)? Не очень хорошая идея, потому что скорее всего вы будете повторно использовать вашу бизнес-логику в других моделях представления или презентерах.

В слое представления? Вы действительно хотите перебрасывать события между представлением и презентером/моделью представления? Давайте посмотрим на пример:

class ShoppingCartActivity : ShoppingCartView, Activity() {
  @Inject lateinit var navigator : Navigator
  @Inject lateinit var presenter : ShoppingCartPresenter

  override fun onCreate(b : Bundle?){
    super.onCreate(b)
    setContentView(R.layout.activity_shopping_cart)
    val checkoutButton = findViewById(R.id.checkoutButton)
    checkoutButton.setOnClickListener {
      presenter.checkoutClicked()
    }
  }

  override fun navigateToCheckout(){
    navigator.showCheckout(this)
  }
}
class ShoppingCartPresenter : Presenter<ShoppingCartView> {
  ...
  override fun checkoutClicked(){
    view?.navigateToCheckout(this)
  }
}

Или если вы предпочитаете MVVM, можно использовать SingleLiveEvents или EventObserver

class ShoppingCartActivity : ShoppingCartView, Activity() {
  @Inject lateinit var navigator : Navigator
  @Inject lateinit var viewModel : ViewModel

  override fun onCreate(b : Bundle?){
    super.onCreate(b)
    setContentView(R.layout.activity_shopping_cart)
    val checkoutButton = findViewById(R.id.checkoutButton)
    checkoutButton.setOnClickListener {
      viewModel.checkoutClicked()
    }

    viewModel.navigateToCheckout.observe(this, Observer {
      navigator.showCheckout(this)
    })
  }
}
class ShoppingCartViewModel : ViewModel() {
  val navigateToCheckout = MutableLiveData<Event<Unit>>
  fun checkoutClicked(){
    navigateToCheckout.value = Event(Unit) // Trigger the event by setting a new Event as a new value
  }
}

Или давайте поместим навигатор в модель представления вместо использования EventObserver’а как было показано в предыдущем примере

class ShoppingCartViewModel @Inject constructor(val navigator : Navigator)  : ViewModel() {
  fun checkoutClicked(){
    navigator.showCheckout()
  }
}

Обратите внимание, что это подход может быть применен и к презентеру. Также мы игнорируем возможную утечку памяти в навигаторе в случае если он будет держать ссылку на активити.

Координатор

Так где же нам разместить логику навигации? Бизнес-логика? Ранее мы уже рассмотрели этот вариант и пришли к выводу, что это не лучшее решение. Перебрасывание событий между представлением и моделью представления может сработать, но это не выглядит элегантным решением. Более того, представление все еще отвечает за логику навигации, хоть мы и вынесли ее в навигатор. Следуя методу исключения у нас остается вариант с размещением логики навигации в модели представления и этот вариант кажется перспективным. Но должна ли модель представления заботиться о навигации? Разве это не просто прослойка между представлением и моделью? Вот почему мы пришли к понятию координатора.

“Зачем нам еще один уровень абстракции?” — спросите вы. Стоит ли того усложнение системы? В маленьких проектах действительно может получиться абстракция ради абстракции, однако в сложных приложениях или в случае использования A/B тестов координатор может оказаться полезным. Допустим, пользователь может создать аккаунт и залогиниться. У нас уже появилась некоторая логика, где мы должны проверить залогинился ли пользователь и показать либо экран логина либо главный экран приложения. Координатор может помочь в приведенном примере. Обратите внимание, что координатор не помогает писать меньше кода, он помогает вынести код логики навигации из представления или модели представления.

Идея координатора предельно проста. Он знает только какой экран приложения надо открыть следующим. Например, когда пользователь нажимает на кнопку оплаты заказа, координатор получает соответствующее событие и знает, что далее необходимо открыть экран оплаты. В iOS координатор используется в качестве сервис локатора, для создания ViewController’ов и управления бэкстеком. Это достаточно много для координатора (помним про принцип единственной ответственности). В Android-приложениях система создает активити, у нас множество инструментов для внедрения зависимостей и есть бекстек для активити и фрагментов. А теперь давайте вернемся к оригинальной идее координатора: координатор просто знает какой экран будет следующим.

Пример: Новостное приложение с использованием координатора

Давайте наконец-то поговорим непосредственно о шаблоне. Представим, что нам нужно создать простое новостное приложение. В приложении есть 2 экрана: “список статей” и “текст статьи”, который открывается по клику на элемент списка.

class NewsFlowCoordinator (val navigator : Navigator) {

  fun start(){
    navigator.showNewsList()
  } 

  fun readNewsArticle(id : Int){
    navigator.showNewsArticle(id)
  }
}

Сценарий (Flow) содержит один или несколько экранов. В нашем примере новостной сценарий состоит из 2 экранов: “список статей” и “текст статьи”. Координатор получился предельно простым. При старте приложения мы вызываем NewsFlowCoordinator#start() чтобы показать список статей. Когда пользователь кликает по элементу списка вызывается метод NewsFlowCoordinator#readNewsArticle(id) и показывается экран с полным текстом статьи. Мы все еще работаем с навигатором (об этом мы поговорим немного позже), которому мы делегируем открытие экрана. У координатора отсутствует состояние, он не зависит от реализации бекстека и реализует только одну функцию: определяет куда пойти дальше.

Но как соединить координатор с нашей моделью представления? Мы последуем принципу инверсии зависимостей: мы будем передавать в модель представления лямбду, которая будет вызываться когда пользователь тапает по статье.

class NewsListViewModel(
  newsRepository : NewsRepository, 
  var onNewsItemClicked: ( (Int) -> Unit )?
) : ViewModel() {
  
  val newsArticles = MutableLiveData<List<News>>

  private val disposable = newsRepository.getNewsArticles().subscribe { 
      newsArticles.value = it
  }

  fun newsArticleClicked(id : Int){
    onNewsItemClicked!!(id) // call the lambda
  }

  override fun onCleared() {
    disposable.dispose()
    onNewsItemClicked = null // to avoid memory leaks
  }
}

onNewsItemClicked: (Int) -> Unit — это лямбда, у которой один целочисленный аргумент и возвращает Unit. Обратите внимание, что лямбда может быть null, это позволит нам очистить ссылку для того чтобы избежать утечки памяти. Создатель модели представления (например, даггер) должен передать ссылку на метод координатора:

return NewsListViewModel(
  newsRepository = newsRepository,
  onNewsItemClicked = newsFlowCoordinator::readNewsArticle
)

Ранее мы упоминали навигатор, который и осуществляет смену экранов. Реализация навигатора остается на ваше усмотрение, поскольку зависит от вашего конкретного подхода и личных предпочтений. В нашем примере мы используем одну активити с несколькими фрагментами (один экран — один фрагмент со своей моделью представления). Я привожу наивную реализацию навигатора:

class Navigator{
  var activity : FragmentActivity? = null

  fun showNewsList(){
    activty!!.supportFragmentManager
      .beginTransaction()
      .replace(R.id.fragmentContainer, NewsListFragment())
      .commit()
  }

  fun showNewsDetails(newsId: Int) {
    activty!!.supportFragmentManager
      .beginTransaction()
      .replace(R.id.fragmentContainer, NewsDetailFragment.newInstance(newsId))
      .addToBackStack("NewsDetail")
      .commit()
    }
}

class MainActivity : AppCompatActivity() {
  @Inject lateinit var navigator : Navigator

  override fun onCreate(savedInstanceState: Bundle?) {
    super.onCreate(savedInstanceState)
    setContentView(R.layout.activity_main)
    navigator.activty = this
  }

  override fun onDestroy() {
    super.onDestroy()
    navigator.activty = null // Avoid memory leaks
  }
}

Приведенная реализация навигатора не идеальна, однако основная идея этого поста — введение в паттерн координатора. Стоит отметить, что поскольку навигатор и координатор не имеют состояния, то они могут быть объявлены в рамках приложения (например Singleton скоуп в даггере) и могут быть инстанциированы в Application#onCreate().

Давайте добавим авторизацию в наше приложение. Мы определим новый экран логина (LoginFragment + LoginViewModel, для простоты мы опустим восстановление пароля и регистрацию) и LoginFlowCoordinator. Почему бы не добавить новый функционал в NewsFlowCoordinator? Мы же не хотим получить God-Coordinator, который будет отвечать за всю навигацию в приложении? Также сценарий авторизации не относится к сценарию чтения новостей, верно?

class LoginFlowCoordinator(
  val navigator: Navigator
) {
  fun start(){
    navigator.showLogin()
  }

  fun registerNewUser(){
    navigator.showRegistration()
  }

  fun forgotPassword(){
    navigator.showRecoverPassword()
  }
}
class LoginViewModel(
  val usermanager: Usermanager,
  var onSignUpClicked: ( () -> Unit )?,
  var onForgotPasswordClicked: ( () -> Unit )?
) {
  fun login(username : String, password : String){
    usermanager.login(username, password)
    ...
  }
  ...
}

Здесь мы видим, что на каждый UI-ивент есть соответствующая лямбда, однако нет лямбды для коллбека успешного логина. Это также деталь реализации и вы можете добавить соответствующую лямбду, однако у меня есть идея получше. Давайте добавим RootFlowCoordinator и подпишемся на изменения модели.

class RootFlowCoordinator(
  val usermanager: Usermanager,
  val loginFlowCoordinator: LoginFlowCoordinator,
  val newsFlowCoordinator: NewsFlowCoordinator,
  val onboardingFlowCoordinator: OnboardingFlowCoordinator
) {

  init {
    usermanager.currentUser.subscribe { user ->
      when (user){
        is NotAuthenticatedUser -> loginFlowCoordinator.start()
        is AuthenticatedUser -> if (user.onBoardingCompleted)
                                    newsFlowCoordinator.start()
                                else
                                    onboardingFlowCoordinator.start()
      }
    }
  }

  fun onboardingCompleted(){
    newsFlowCoordinator.start()
  }
}

Таким образом, RootFlowCoordinator будет входной точкой нашей навигации вместо NewsFlowCoordinator. Давайте остановим наше внимание на RootFlowCoordinator. Если пользователь залогинен, то мы проверяем прошел ли он онбординг (об этом чуть позже) и начинаем сценарий новостей или онбординга. Обратите внимание, что LoginViewModel не принимает участия в этой логике. Опишем сценарий онбординга.

class OnboardingFlowCoordinator(
  val navigator: Navigator,
  val onboardingFinished: () -> Unit // this is RootFlowCoordinator.onboardingCompleted()
) {

  fun start(){
    navigator.showOnboardingWelcome()
  }

  fun welcomeShown(){
    navigator.showOnboardingPersonalInterestChooser()
  }

  fun onboardingCompleted(){
    onboardingFinished()
  }
}

Онбординг запускается вызовом OnboardingFlowCoordinator#start(), который показывает WelcomeFragment (WelcomeViewModel). После клика по кнопке “next” вызывается метод OnboardingFlowCoordinator#welcomeShown(). Который показывает следующий экран PersonalInterestFragment + PersonalInterestViewModel, на котором пользователь выбирает категории интересных новостей. После выбора категорий пользователь тапает по кнопке “next” и вызывается метод OnboardingFlowCoordinator#onboardingCompleted(), который проксирует вызов RootFlowCoordinator#onboardingCompleted(), который запускает NewsFlowCoordinator.
Посмотрим как координатор может упростить работу с A/B тестами. Я добавлю экран с предложением совершить покупку в приложении и буду показывать его некоторым пользователям.

class NewsFlowCoordinator (
  val navigator : Navigator,
  val abTest : AbTest
) {

  fun start(){
    navigator.showNewsList()
  } 

  fun readNewsArticle(id : Int){
    navigator.showNewsArticle(id)
  }

  fun closeNews(){
    if (abTest.isB){
      navigator.showInAppPurchases()
    } else {
      navigator.closeNews()
    }
  }
}

И снова мы не добавили никакой логики в представление или его модель. Решили добавить InAppPurchaseFragment в онбординг? Для этого понадобится изменить только координатор онбординга, поскольку фрагмент покупок и его viewmodel полностью независим от других фрагментов и мы свободно можем его повторно использовать в других сценариях. Координатор также поможет реализоваnь А/В тест, который сравнивает два сценария онбординга.

Полные исходники можно найти на гитхабе, а для ленивых я подготовил видеодемонстрацию


Специально для тех, кто уже посетил Киберкар и установил наш флагман мы подготовили подборку из 10 приложений, которые помогут реализовать потенциал столь гибкого устройства. Давайте же начнем!



10. MultiGo


Ссылка на приложение



Утилита помогает найти водителю ближайшую заправочную станцию. Приложение выдает максимально подробные данные об АЗС, включая местоположение, цены и даже отзывы других водителей. Информация обновляется постоянно, а в глобальной базе приложения забиты не только всем известные «Роснефть», «Лукойл», Газпромнефть и т.д., но даже малоизвестные заправочные станции.


Вместе с основной информацией, приложение также предоставляет второстепенную, вроде различных услуг: автомойки, СТО, магазины, кафе и т.д.


9. GPS Антирадар (или «Антирадар Стрелка»)


Ссылки на приложения:
GPS Антирадар
Стрелка



Максимально полезное в нынешних реалиях приложение, которое поможет определить местоположение радаров, камер фото- и видеорегистраторов. Приложение реагирует характерным сигналом, когда скорость движения автомобиля превышает заданный норматив.


Зачастую мы рекомендуем нашим клиентам, в случае, если у них уже стоит Android 7 версии и выше пользоваться «Двойным экраном», на который можно спроецировать сразу два приложения. Часто это бывает навигационное приложение в связке с антирадаром.


8. Где мойка?


Ссылка на приложение



В случае, когда машину нужно привести в порядок, а излюбленного адреса нет, то приложение «Где мойка?» подскажет не только местоположение ближайших организаций, то также цены, рейтинг и как добираться. В отличие от навигационных программ, где все мойки разом просто не могут быть выведены, утилита предоставляет информацию из актуальной базы.


Также имеется возможность забронировать желаемое время и вымыть машину максимально удобным способом.


7. Спасатель.Рядом (Первая помощь)


Ссылка на приложение



Сидя за рулем, в первую очередь нужно позаботиться о сохранности себя и своих близких. Если же несчастный случай все-таки произошел, на помощь придет обученный персонал. И чтобы помощь была максимально оперативной рекомендуем установить данное приложение, которое позволит вызвать квалифицированного человека.


Спасатель.Рядом – это целое сообщество неравнодушных людей, которые в любую минуту готовы помочь. Ну, а мы, в свою очередь, рекомендуем вам соблюдать все техники безопасности при вождении и быть осторожными.


6. 2ГИС


Ссылка на приложение



Любой топ с навигационными программами не обходится без данного справочника. Отличительной его особенностью является возможность пользоваться справочной информацией даже без прямого подключения к сети. Достаточно скачать базу, которая кропотливо распределена разработчиками и нанесена на удобную карту, и вы никогда не зададитесь вопросом: «А куда это я попал?»


База 2ГИС наполнена детальной информация о торговых центрах, различных заведения и культурных достопримечательностей. С помощью 2ГИС можно планировать свой маршрут.

Приложение также можно использовать как добротный навигатор.


5. izi.Travel гид-путеводитель


Ссылка на приложение



Незаменимый помощник в случае, если вы приехали в незнакомый вам город с экскурсионными целями. Мало того, что помогает экономить на порой некомпетентных экскурсоводах, так еще и покажет обязательный к ознакомлению маршрут. Многие из озвученных монологов информативны и полезны, но не всегда исполнены в профессиональной озвучке.


4. Яндекс.Музыка


Ссылка на приложение



Далеко не всегда приходится по душе автомобилистам однообразная музыка, которую сутками крутят по радиостанциям. На помощь приходят музыкальные сервисы и на территории СНГ самым популярным из них является Яндекс.Музыка.


В первую очередь, это удобный музыкальный сервис, который подбирает музыку специально под интересы пользователя. Если вы поклонник определенного жанра, то каждый день Я.М будет формировать для вас уникальный плейлист, который не даст заскучать даже в самой длинной пробке.


Не знаете, что лайкать для подбора уникальных композиций? Выберите жанр в разделе «Радио», и сервис безустанно будет транслировать композиции, которые можно отметить сердечком для дальнейшего подбора. В приложении также есть плейлисты под настроение и многое-многое другое.


3. Литрес: Слушай (или Storytel)


Ссылка на приложение
(Литрес)
Ссылка на приложение (Storytel)



Идеальное решение для тех, кто скучает по тихим вечерам за чтением художественной прозы или какого-нибудь популярного нон-фикшн. Думаем, что многие согласятся с тем, что мы тратим уйму времени, пребывая в дороге. И дабы провести его максимально продуктивно, рекомендуем воспользоваться данными информационными кладезями.


Оба сервиса весьма разношерстны и насчитывают огромное количество книг, озвученные профессиональными дикторами и дифференцированы по жанрам, стилям и т.д. Также они могут достаточно точно определить ваши предпочтения и предоставить наиболее подходящие произведение.


Отличие: Storytell – сервис с помесячной оплатой (первые две недели бесплатно). Литрес – библиотека с разовой покупкой, а также возможностью прослушать отрывок книги.


2. Лайм HD TV (или TV+ HD)


Ссылка на приложение (Лайм HD TV)
Ссылка на приложение (TV+ HD)



Два аналогичных приложения, в которых представлен огромный перечень российских телеканалов, многие из которых транслируются в формате HD. Наиболее пригодные утилиты для тех, кто любит находиться в информационной повестке или быть в курсе многих спортивных событий.


Детей в дороге можно развлечь детским контентом, а в период долгого простоя можно спокойно уединиться и посмотреть любимый сериал.


Минуc заключается в отсутствии региональных настроек. Все телеканалы ориентированы на МСК (UTC+4).


1. Яндекс.Навигатор


Ссылка на приложение



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


Взаимодействовать с поисковиком можно при помощи Яндекс.Алисы и голосового ввода. Приложение может найти для вас места для парковок и оперативно оплатить их онлайн (действует в крупных городах). Также навигатор может предупреждать о наличии камер и регистраторов, а также позволяет настроить маршруты типа «Работа-Дом» и т.д. А с учетом того, что Яндекс.Навигатор умеет работать в режиме оффлайн (необходимо подгрузить карты) – цены этому приложению нет. Определенный «маст хэв» в любом автомобиле!



Стоит оговориться, что в данный топ не вошли такие приложения, как YouTube, Google Maps и другие утилиты, связанные с компанией Google, так как они уже предустановлены в автомобиль, кроме разве что «YouTube Детям», которую мы так же рекомендуем если не хотите видеть скучающее чадо.


Другие приложения – которых вагон и маленькая тележка – мы оставим на следующий материал, а пока сохраняйте данный топ в закладки и открывайте предоставленные ссылки. И помните, что вместе с AirTouch Performance автомобиль можно прокачать как угодно, все зависит от фантазии пользователя!

Навигация в Android-приложении с помощью координаторов / Блог компании TINKOFF / Хабр

За последние несколько лет мы выработали общие подходы создания Android-приложений. Чистая архитектура, архитектурные шаблоны (MVC, MVP, MVVM, MVI), шаблон “репозиторий” и другие. Однако до сих пор нет общепринятых подходов к организации навигации по приложению. Сегодня я хочу поговорить с вами о шаблоне “координатор” и возможностях его применении в разработке Android-приложений.

Шаблон “координатор” часто используется в iOS-приложениях и был представлен Сорушем Ханлоу (Soroush Khanlou) с целью упростить навигацию по приложению. Есть мнение, что работа Соруша основана на подходе Application Controller, описанном в книге Patterns of Enterprise Application Architecture Мартином Фаулером (Martin Fowler).

Шаблон “координатор” призван решить следующие задачи:

  • борьба с Massive View Controller проблемой (о проблеме уже писали на хабре — прим. переводчика), которая зачастую проявляется с появлением God-Activity (активити с большим количеством обязанностей).
  • выделение логики навигации в отдельную сущность
  • переиспользование экранов приложения (активити/фрагментов) благодаря слабой связи с логикой навигации

Но, прежде чем начать знакомство с шаблоном и попробовать его реализовать, давайте взглянем на используемые реализации навигации в Android-приложениях.

Логика навигации описана в активити/фрагменте

Поскольку Android SDK требует Context для открытия новой активити (или FragmentManager для того, чтобы добавить фрагмент в активити), довольно часто логику навигации описывают непосредственно в активити/фрагменте. Даже примеры в документации к Android SDK используют этот подход.

class ShoppingCartActivity : Activity() {  
  override fun onCreate(b : Bundle?){
    super.onCreate(b)
    setContentView(R.layout.activity_shopping_cart)
    val checkoutButton = findViewById(R.id.checkoutButton)
    checkoutButton.setOnClickListener {
      val intent = Intent(this, CheckoutActivity::class.java)
      startActivity(intent)
    }
  }
}

В приведенном примере навигация тесно связана с активити. Удобно ли тестировать подобный код? Можно было бы возразить, что мы можем выделить навигацию в отдельную сущность и назвать ее, к примеру, Navigator, который может быть внедрен. Давайте посмотрим:

class ShoppingCartActivity : Activity() {
  @Inject lateinit var navigator : Navigator  
  override fun onCreate(b : Bundle?){
    super.onCreate(b)
    setContentView(R.layout.activity_shopping_cart)
    val checkoutButton = findViewById(R.id.checkoutButton)
    checkoutButton.setOnClickListener {
      navigator.showCheckout(this)
    }
  }
}
class Navigator {
   fun showCheckout(activity : Activity){
    val intent = Intent(activity, CheckoutActivity::class.java)
    activity.startActivity(intent)
  }
}

Получилось неплохо, но хочется большего.

Навигация с MVVM/MVP

Начну с вопроса: где бы вы расположили логику навигации при использовании MVVM/MVP?

В слое под презентером (назовем его бизнес-логикой)? Не очень хорошая идея, потому что скорее всего вы будете повторно использовать вашу бизнес-логику в других моделях представления или презентерах.

В слое представления? Вы действительно хотите перебрасывать события между представлением и презентером/моделью представления? Давайте посмотрим на пример:

class ShoppingCartActivity : ShoppingCartView, Activity() {
  @Inject lateinit var navigator : Navigator
  @Inject lateinit var presenter : ShoppingCartPresenter

  override fun onCreate(b : Bundle?){
    super.onCreate(b)
    setContentView(R.layout.activity_shopping_cart)
    val checkoutButton = findViewById(R.id.checkoutButton)
    checkoutButton.setOnClickListener {
      presenter.checkoutClicked()
    }
  }

  override fun navigateToCheckout(){
    navigator.showCheckout(this)
  }
}
class ShoppingCartPresenter : Presenter<ShoppingCartView> {
  ...
  override fun checkoutClicked(){
    view?.navigateToCheckout(this)
  }
}

Или если вы предпочитаете MVVM, можно использовать SingleLiveEvents или EventObserver

class ShoppingCartActivity : ShoppingCartView, Activity() {
  @Inject lateinit var navigator : Navigator
  @Inject lateinit var viewModel : ViewModel

  override fun onCreate(b : Bundle?){
    super.onCreate(b)
    setContentView(R.layout.activity_shopping_cart)
    val checkoutButton = findViewById(R.id.checkoutButton)
    checkoutButton.setOnClickListener {
      viewModel.checkoutClicked()
    }

    viewModel.navigateToCheckout.observe(this, Observer {
      navigator.showCheckout(this)
    })
  }
}
class ShoppingCartViewModel : ViewModel() {
  val navigateToCheckout = MutableLiveData<Event<Unit>>
  fun checkoutClicked(){
    navigateToCheckout.value = Event(Unit) // Trigger the event by setting a new Event as a new value
  }
}

Или давайте поместим навигатор в модель представления вместо использования EventObserver’а как было показано в предыдущем примере

class ShoppingCartViewModel @Inject constructor(val navigator : Navigator)  : ViewModel() {
  fun checkoutClicked(){
    navigator.showCheckout()
  }
}

Обратите внимание, что это подход может быть применен и к презентеру. Также мы игнорируем возможную утечку памяти в навигаторе в случае если он будет держать ссылку на активити.

Координатор

Так где же нам разместить логику навигации? Бизнес-логика? Ранее мы уже рассмотрели этот вариант и пришли к выводу, что это не лучшее решение. Перебрасывание событий между представлением и моделью представления может сработать, но это не выглядит элегантным решением. Более того, представление все еще отвечает за логику навигации, хоть мы и вынесли ее в навигатор. Следуя методу исключения у нас остается вариант с размещением логики навигации в модели представления и этот вариант кажется перспективным. Но должна ли модель представления заботиться о навигации? Разве это не просто прослойка между представлением и моделью? Вот почему мы пришли к понятию координатора.

“Зачем нам еще один уровень абстракции?” — спросите вы. Стоит ли того усложнение системы? В маленьких проектах действительно может получиться абстракция ради абстракции, однако в сложных приложениях или в случае использования A/B тестов координатор может оказаться полезным. Допустим, пользователь может создать аккаунт и залогиниться. У нас уже появилась некоторая логика, где мы должны проверить залогинился ли пользователь и показать либо экран логина либо главный экран приложения. Координатор может помочь в приведенном примере. Обратите внимание, что координатор не помогает писать меньше кода, он помогает вынести код логики навигации из представления или модели представления.

Идея координатора предельно проста. Он знает только какой экран приложения надо открыть следующим. Например, когда пользователь нажимает на кнопку оплаты заказа, координатор получает соответствующее событие и знает, что далее необходимо открыть экран оплаты. В iOS координатор используется в качестве сервис локатора, для создания ViewController’ов и управления бэкстеком. Это достаточно много для координатора (помним про принцип единственной ответственности). В Android-приложениях система создает активити, у нас множество инструментов для внедрения зависимостей и есть бекстек для активити и фрагментов. А теперь давайте вернемся к оригинальной идее координатора: координатор просто знает какой экран будет следующим.

Пример: Новостное приложение с использованием координатора

Давайте наконец-то поговорим непосредственно о шаблоне. Представим, что нам нужно создать простое новостное приложение. В приложении есть 2 экрана: “список статей” и “текст статьи”, который открывается по клику на элемент списка.

class NewsFlowCoordinator (val navigator : Navigator) {

  fun start(){
    navigator.showNewsList()
  } 

  fun readNewsArticle(id : Int){
    navigator.showNewsArticle(id)
  }
}

Сценарий (Flow) содержит один или несколько экранов. В нашем примере новостной сценарий состоит из 2 экранов: “список статей” и “текст статьи”. Координатор получился предельно простым. При старте приложения мы вызываем NewsFlowCoordinator#start() чтобы показать список статей. Когда пользователь кликает по элементу списка вызывается метод NewsFlowCoordinator#readNewsArticle(id) и показывается экран с полным текстом статьи. Мы все еще работаем с навигатором (об этом мы поговорим немного позже), которому мы делегируем открытие экрана. У координатора отсутствует состояние, он не зависит от реализации бекстека и реализует только одну функцию: определяет куда пойти дальше.

Но как соединить координатор с нашей моделью представления? Мы последуем принципу инверсии зависимостей: мы будем передавать в модель представления лямбду, которая будет вызываться когда пользователь тапает по статье.

class NewsListViewModel(
  newsRepository : NewsRepository, 
  var onNewsItemClicked: ( (Int) -> Unit )?
) : ViewModel() {
  
  val newsArticles = MutableLiveData<List<News>>

  private val disposable = newsRepository.getNewsArticles().subscribe { 
      newsArticles.value = it
  }

  fun newsArticleClicked(id : Int){
    onNewsItemClicked!!(id) // call the lambda
  }

  override fun onCleared() {
    disposable.dispose()
    onNewsItemClicked = null // to avoid memory leaks
  }
}

onNewsItemClicked: (Int) -> Unit — это лямбда, у которой один целочисленный аргумент и возвращает Unit. Обратите внимание, что лямбда может быть null, это позволит нам очистить ссылку для того чтобы избежать утечки памяти. Создатель модели представления (например, даггер) должен передать ссылку на метод координатора:

return NewsListViewModel(
  newsRepository = newsRepository,
  onNewsItemClicked = newsFlowCoordinator::readNewsArticle
)

Ранее мы упоминали навигатор, который и осуществляет смену экранов. Реализация навигатора остается на ваше усмотрение, поскольку зависит от вашего конкретного подхода и личных предпочтений. В нашем примере мы используем одну активити с несколькими фрагментами (один экран — один фрагмент со своей моделью представления). Я привожу наивную реализацию навигатора:

class Navigator{
  var activity : FragmentActivity? = null

  fun showNewsList(){
    activty!!.supportFragmentManager
      .beginTransaction()
      .replace(R.id.fragmentContainer, NewsListFragment())
      .commit()
  }

  fun showNewsDetails(newsId: Int) {
    activty!!.supportFragmentManager
      .beginTransaction()
      .replace(R.id.fragmentContainer, NewsDetailFragment.newInstance(newsId))
      .addToBackStack("NewsDetail")
      .commit()
    }
}

class MainActivity : AppCompatActivity() {
  @Inject lateinit var navigator : Navigator

  override fun onCreate(savedInstanceState: Bundle?) {
    super.onCreate(savedInstanceState)
    setContentView(R.layout.activity_main)
    navigator.activty = this
  }

  override fun onDestroy() {
    super.onDestroy()
    navigator.activty = null // Avoid memory leaks
  }
}

Приведенная реализация навигатора не идеальна, однако основная идея этого поста — введение в паттерн координатора. Стоит отметить, что поскольку навигатор и координатор не имеют состояния, то они могут быть объявлены в рамках приложения (например Singleton скоуп в даггере) и могут быть инстанциированы в Application#onCreate().

Давайте добавим авторизацию в наше приложение. Мы определим новый экран логина (LoginFragment + LoginViewModel, для простоты мы опустим восстановление пароля и регистрацию) и LoginFlowCoordinator. Почему бы не добавить новый функционал в NewsFlowCoordinator? Мы же не хотим получить God-Coordinator, который будет отвечать за всю навигацию в приложении? Также сценарий авторизации не относится к сценарию чтения новостей, верно?

class LoginFlowCoordinator(
  val navigator: Navigator
) {
  fun start(){
    navigator.showLogin()
  }

  fun registerNewUser(){
    navigator.showRegistration()
  }

  fun forgotPassword(){
    navigator.showRecoverPassword()
  }
}
class LoginViewModel(
  val usermanager: Usermanager,
  var onSignUpClicked: ( () -> Unit )?,
  var onForgotPasswordClicked: ( () -> Unit )?
) {
  fun login(username : String, password : String){
    usermanager.login(username, password)
    ...
  }
  ...
}

Здесь мы видим, что на каждый UI-ивент есть соответствующая лямбда, однако нет лямбды для коллбека успешного логина. Это также деталь реализации и вы можете добавить соответствующую лямбду, однако у меня есть идея получше. Давайте добавим RootFlowCoordinator и подпишемся на изменения модели.

class RootFlowCoordinator(
  val usermanager: Usermanager,
  val loginFlowCoordinator: LoginFlowCoordinator,
  val newsFlowCoordinator: NewsFlowCoordinator,
  val onboardingFlowCoordinator: OnboardingFlowCoordinator
) {

  init {
    usermanager.currentUser.subscribe { user ->
      when (user){
        is NotAuthenticatedUser -> loginFlowCoordinator.start()
        is AuthenticatedUser -> if (user.onBoardingCompleted)
                                    newsFlowCoordinator.start()
                                else
                                    onboardingFlowCoordinator.start()
      }
    }
  }

  fun onboardingCompleted(){
    newsFlowCoordinator.start()
  }
}

Таким образом, RootFlowCoordinator будет входной точкой нашей навигации вместо NewsFlowCoordinator. Давайте остановим наше внимание на RootFlowCoordinator. Если пользователь залогинен, то мы проверяем прошел ли он онбординг (об этом чуть позже) и начинаем сценарий новостей или онбординга. Обратите внимание, что LoginViewModel не принимает участия в этой логике. Опишем сценарий онбординга.

class OnboardingFlowCoordinator(
  val navigator: Navigator,
  val onboardingFinished: () -> Unit // this is RootFlowCoordinator.onboardingCompleted()
) {

  fun start(){
    navigator.showOnboardingWelcome()
  }

  fun welcomeShown(){
    navigator.showOnboardingPersonalInterestChooser()
  }

  fun onboardingCompleted(){
    onboardingFinished()
  }
}

Онбординг запускается вызовом OnboardingFlowCoordinator#start(), который показывает WelcomeFragment (WelcomeViewModel). После клика по кнопке “next” вызывается метод OnboardingFlowCoordinator#welcomeShown(). Который показывает следующий экран PersonalInterestFragment + PersonalInterestViewModel, на котором пользователь выбирает категории интересных новостей. После выбора категорий пользователь тапает по кнопке “next” и вызывается метод OnboardingFlowCoordinator#onboardingCompleted(), который проксирует вызов RootFlowCoordinator#onboardingCompleted(), который запускает NewsFlowCoordinator.
Посмотрим как координатор может упростить работу с A/B тестами. Я добавлю экран с предложением совершить покупку в приложении и буду показывать его некоторым пользователям.

class NewsFlowCoordinator (
  val navigator : Navigator,
  val abTest : AbTest
) {

  fun start(){
    navigator.showNewsList()
  } 

  fun readNewsArticle(id : Int){
    navigator.showNewsArticle(id)
  }

  fun closeNews(){
    if (abTest.isB){
      navigator.showInAppPurchases()
    } else {
      navigator.closeNews()
    }
  }
}

И снова мы не добавили никакой логики в представление или его модель. Решили добавить InAppPurchaseFragment в онбординг? Для этого понадобится изменить только координатор онбординга, поскольку фрагмент покупок и его viewmodel полностью независим от других фрагментов и мы свободно можем его повторно использовать в других сценариях. Координатор также поможет реализоваnь А/В тест, который сравнивает два сценария онбординга.

Полные исходники можно найти на гитхабе, а для ленивых я подготовил видеодемонстрацию

Полезный совет: используя котлин можно создать удобный dsl для описания координаторов в виде графа навигации.

newsFlowCoordinator(navigator, abTest) {

  start {
    navigator.showNewsList()
  } 

  readNewsArticle { id ->
    navigator.showNewsArticle(id)
  }

  closeNews {
    if (abTest.isB){
      navigator.showInAppPurchases()
    } else {
      navigator.closeNews()
    }
  }
}

Итоги:

Координатор поможет вынести логику навигации в тестируемый слабосвязанный компонент. На данный момент нет production-ready библиотеки, я описал лишь концепцию решения проблемы. Применим ли координатор к вашему приложению? Не знаю, это зависит от ваших потребностей и насколько легко будет интегрировать его в существующую архитектуру. Возможно, будет полезно написать небольшое приложение с использованием координатора.

ЧаВо:

В статье не упоминается использование координатора с шаблоном MVI. Возможно ли использовать координатор с этой архитектурой? Да, у меня есть отдельная статья.

Гугл недавно представил Navigation Controller как часть Android Jetpack. Как координатор соотносится с навигацией от гугла? Вы можете использовать новый Navigation Controller вместо навигатора в координаторах или непосредственно в навигаторе вместо ручного создания транзакций фрагментов.

А если я не хочу использовать фрагменты/активити и хочу написать свой бекстек для управления вьюхами — получится ли использовать координатор в моем случае? Я тоже задумался об этом и работаю над прототипом. Я напишу об этом в своем блоге. Мне кажется, что конечный автомат здорово упростит задачу.

Привязан ли координатор к single-activity-application подходу? Нет, вы можете использовать его в различных сценариях. Реализация перехода между экранами скрыта в навигаторе.

При описанном подходе получится огромный навигатор. Мы же вроде пытались уйти от God-Object’a? Мы не обязаны описывать навигатор в одном классе. Создайте несколько небольших поддерживаемых навигатора, например, отдельный навигатор для каждого пользовательского сценария.

Как работать с анимациями непрерывных переходов? Описывайте анимации переходов в навигаторе, тогда активити/фрагмент не будет ничего знать о предыдущем/следующем экране. Как навигатор узнает когда запускать анимацию? Допустим, мы хотим показать анимацию перехода между фрагментами А и Б. Мы можем подписаться на событие onFragmentViewCreated(v: View) с помощью FragmentLifecycleCallback и при наступлении этого события мы можем работать с анимациями так же, как мы это делали непосредственно в фрагменте: добавить OnPreDrawListener чтобы дождаться готовности и вызвать startPostponedEnterTransition(). Примерно так же можно реализовать анимированный переход между активити с помощью ActivityLifecycleCallbacks или между ViewGroup с помощью OnHierarchyChangeListener. Не забудьте потом отписаться от событий чтобы избежать утечек памяти.

Sygic запускает iOS-версию самого популярного навигационного приложения для водителей грузовиков и коммерческого транспорта — Sygic

Sygic, самое популярное приложение Android для навигации грузовиков, сегодня запускает версию приложения для водителей жилых автофургонов, автобусов, грузовых фургонов и большегрузного транспорта для устройств под управлением iOS, которая доступна для загрузки на iPhone или iPad. Компания также выпускает важное обновление для приложения на платформе Android.

Фирменный функционал Head-Up Display от Sygic создан для обеспечения безопасности. Простой в использовании интерфейс HUD позволяет водителям менять ориентацию экрана и проектирует информацию о маршрутах со смартфона или планшета прямо на лобовое стекло автомобиля. Благодаря этому водители могут не отвлекаться от дороги во время движения.

Водитель выбирает тип своего автомобиля, задает его габариты и вес и получает подробные трехмерные карты, на которых отображаются маршруты, подходящие для конкретного грузовика, автофургона, жилого автофургона или автобуса. Это позволяет избегать любых дорог и мостов, которые не подходят для того или иного транспортного средства. Система карт от HERE также может работать в автономном режиме, что крайне важно для поездок в удаленные районы, в которых отсутствует надежное подключение к сети Интернет.

Помимо этого, приложение Sygic Truck Navigation предоставляет информацию о точках интереса, парковках и заправочных станциях, которые подходят для грузовиков, автобусов и жилых автофургонов. Помимо этого, просто изменив настройки приложения, водители могут использовать его в обычных автомобилях без какой бы то ни было дополнительной платы. Приложение также предлагает платные дополнения, предоставляющие в реальном времени информацию о ситуации на дорогах, данные о расположении камер контроля скорости и обеспечивающие пошаговую голосовую навигацию.

«Цель компании Sygic — помогать всем и каждому находить нужные маршруты, повышать уровень безопасности и комфорта в дороге, а также постоянно улучшать сервис навигации, — говорит основатель и CEO компании Sygic Михал Штенцль (Michal Štencl). — Приложение Sygic для навигации грузовиков и коммерческого транспорта поможет сократить число аварий в ночное время, позволяя водителям концентрироваться на дороге, а не отвлекаться на экран SatNav».

Согласно данным Berg Insight, в 2013 г. в США насчитывалось 12 млн грузовиков, а в Европе — 5,5 млн. Согласно данным Отраслевой ассоциации производителей жилых автофургонов (Recreation Vehicle Industry Association) количество семей, владеющих автодомами в США, в 2011 году составило 8,9 млн.

Компания выделяется на фоне конкурентов благодаря интерфейсу Head-Up Display собственной разработки и функции «Правый поворот», которая предлагает водителю маршруты без поворотов налево. Это позволяет не только снизить расход топлива, но также помогает избегать рискованных поворотов налево (данная функция автоматически переходит в режим «Левый поворот» в Соединенном Королевстве и других странах с левосторонним движением).

«По нашему мнению, приложение Sygic для водителей грузовиков, автобусов и жилых автофургонов является самым безопасным и наиболее функциональным решением SatNav на рынке. Мы очень рады, что теперь наши услуги доступны для пользователей iPhone. Мы хотим, чтобы еще больше водителей использовали Sygic на дорогах», — добавляет Штенцль.

Стоимость приложения Sygic составляет 139 долл. США в Северной Америке и 129 евро в Европе. Пробный период использования — 14 дней.

5 лучших приложений для GPS-навигации и карт на Android

Мы много путешествуем, и иногда мы не знаем, куда идти или ехать. К счастью, есть несколько отличных навигационных приложений для Android, которые помогут нам не сбиться с пути и вовремя добраться до пункта назначения.

Несколько лет назад навигационные приложения для Android были не такими развитыми и функциональными, как сегодня, большинство из них связано с картами Google, которые обновлялись с течением времени.

Мы видели, что интерфейс и функционал этих приложений резко изменился за последние 2 года, и это к лучшему. Разработчики этих приложений постоянно пытаются сделать свое приложение лучшим, и оно окупается.

Честно говоря, я использую навигацию Google только для своих повседневных задач, но некоторые из моих друзей использовали другие приложения и полюбили их.


Если вы новичок в мире GPS-навигации на Android, Google Maps – лучшее приложение, которое вы можете получить. Оно является одним из наиболее часто используемых навигационных приложений на Android, и для этого есть веская причина.

Прежде всего, карты получают частые обновления и нововведения, и многие пользователи используют его в качестве ежедневного путеводителя. С Google Картами вы будете получать актуальную информацию о закрытых дорогах, а также информацию о пробках. Навигационное приложение способно предоставлять точную информацию на ваше устройство и может помочь вам принимать разумные решения и перенаправлять данные.

Особенности:

  • Рекомендуемые места
  • Оффлайн Карты

Это приложение прекрасно, потому что оно действительно интуитивно понятное в использовании, и в нем есть почти все, что вы могли бы захотеть от GPS-навигатора. Он даже показывает, какие дороги более загруженные, а какой путь короче. Кроме того, он адаптируется к вашей скорости и может почти точно предсказать, когда вы прибудете в пункт назначения.

Скачать бесплатно: Google Карты


Waze — это удивительная альтернатива Google Maps, поскольку приложение также использует аналогичный способ информирования вас о трафике и маршрутах.

По сути, Waze – это ориентированное на сообщества навигационное приложение, которое использует информацию других пользователей, чтобы лучше ориентироваться в ваших повседневных поездках.

Например, если кто-то замечает, что произошла пробка или произошел несчастный случай, Waze может легко сообщить другим, кто находится позади, чтобы они могли поехать в обход. Приложение предлагает информацию о маршрутизации в реальном времени и сообществе, информацию о дорожной обстановке в режиме реального времени.

  

Особенности:

  • Оповещения о полиции, дорожном движении и другом
  • Совместимость с Android Auto
  • Информация от других пользователей в реальном времени

Нам также нравится, что есть голосовая навигация с пошаговыми инструкциями, так что вы можете легко использовать это приложение и на велосипедах. Приложение так же способно автоматически перенаправить ваш путь в соответствии с меняющимися условиями движения.

Кроме того, для развлечения вы можете записать собственный голос, который поможет вам добраться до пункта назначения.

Скачать бесплатно: Waze


GPS-навигация Sygic довольно популярна в странах Южной Азии, потому что это надежное приложение, которое позволяет вам перемещаться, не используя слишком много данных.

Поскольку большинство карт хранятся в памяти телефона, приложение позволяет вам также использовать автономную навигацию. Однако многие функции будут отключены при использовании приложения исключительно в автономном режиме.

Кроме великолепных голосовых функций навигации, вы также будете периодически получать бесплатные обновления карт.

Особенности:

  • Оффлайн Карты
  • Информация о топливе
  • Dynamic Lane Assistant

Совместное использование маршрута в режиме реального времени позволяет вам поделиться всей поездкой с друзьями или семьей, чтобы вы могли легко узнать время вашего прибытия.

Скачать бесплатно: Sygic


Мы большие поклонники отличных интерфейсов, но, к сожалению, это приложение поставляется с «сырым» дизайном. Тем не менее, это сильное приложение в своей категории.

  

Особенности:

  • Ограничение скорости и предупреждения камер
  • Оффлайн карты
  • Разные типы маршрутов для разных видов транспорта

Несмотря на то, что интерфейс немного блочный, дизайн очень удобен, понятен и может быть полезен в повседневной работе. Это навигационное приложение поставляется с бесплатными автономными картами GPS, которые позволяют перемещаться даже без подключения к Интернету.

Интуитивно понятная голосовая навигация доступна на разных языках. MapFactor имеет трансграничную маршрутизацию, так что вы можете легко переключаться между странами, не полагаясь на менее подробную карту.

Скачать бесплатно: GPS MapFactor


MAPS.ME — это одно из самых быстрых и подробных навигационных приложений для Android. Самое приятное, что приложение доступно полностью в автономном режиме, и вы можете использовать его, даже не подключаясь к Интернету.

Конечно, вам придется загрузить карты до того, как вы отправитесь в приключение, но, по крайней мере, оно не зависит от постоянного соединения для навигации.

  

Особенности:

  • Полностью автономная навигация
  • Интересные места
  • Закладки

Еще одна положительная особенность этого навигационного приложения для Android состоит в том, что все карты находятся внутри, и каждая функция бесплатна. Вождение, ходьба и даже велосипедная навигация доступны в любой точке мира. Это приложение охватывает все точки земного шара – от достопримечательностей до туристических троп.

Скачать бесплатно: MAPS.ME

18 проверенных мобильных приложений для путешественника

Мы перепробовали массу программ для смартфона, которые помогают в путешествии. Сегодня я хотела бы остановиться на самых-самых лучших, которые остались с нами после полутора лет кругосветки. Это не переписывание чужих бестолковых списков, которыми полон интернет, а только проверенные мобильные приложения.

Карты

Раньше я распечатывала карты из путеводителей или брала в туристинфо и пыталась по ним ходить. У меня получалось, но эти карты были неполными, и случалось заблудиться. Сейчас я не представляю себе путешествия без карты в моем смартфоне.

Идеальной карты на все случаи жизни не существует, я рассмотрю плюсы и минусы тех, которыми я пользуюсь.

Maps.me

Android, iPhone и iPad

Плюсы:

  • бесплатная
  • работает оффлайн
  • есть все страны
  • множество точек
  • есть навигация, в том числе по тропам
  • возможность отмечать места разными цветами и создавать списки из них
  • быстрая

Минусы:

  • автомобильная навигация иногда строит странные маршруты: по более короткому, но не самому быстрому пути (пару раз завозила нас в страшные места).
  • при обновлении программы требует обновлять все скачанные карты

Вывод: хорошая карта для пешеходных прогулок по городу и тропам, но слабовата для автомобильной навигации

OsmAnd

Android, iPhone и iPad

Плюсы:

  • есть все страны
  • работает оффлайн
  • точек больше, чем в Maps.me (Maps.me берет точки из Osm)
  • есть навигация (пешеход и авто), в том числе с голосом, в том числе по горной тропе, знает ограничения скорости
  • возможность отмечать места
  • маршруты общественного транспорта
  • можно загрузить профили высот (плагин платный, но стоит копейки)
  • можно записывать и загружать треки

Минусы:

  • всего 7 бесплатных карт (но покупка стоит недорого)
  • не умеет строить маршрут на длинные дистанции
  • медленная

Вывод: подходит как источник дополнительной информации для туризма в городе, для автонавигации на небольшие расстояния, и для пешеходного туризма (но учтите, что с навигацией батарея быстро садится).

Sygic

Android, iPhone и iPad

Плюсы:

  • прекрасная автомобильная навигация, в том числе на большие расстояния
  • предлагает разные варианты маршрутов
  • работает оффлайн
  • много точек
  • возможность отмечать места
  • быстрая
  • при наличии интернета можно подгружать пробки и аварии

Минусы:

  • навигация голосом и показ ограничений скорости только в недешевой платной версии
  • неудобная пешеходная навигация
  • представлены не все страны, в основном годится для Европы, США и других развитых стран

Вывод: великолепная карта для поездок на автомобиле или мотоцикле по развитым странам.

Google Maps

Android, iPhone и iPad

Плюсы:

  • бесплатная
  • можно внести избранное в компьютере и синхронизировать через интернет
  • множество точек
  • есть навигация по дорогам с учетом пробок

Минусы:

  • для работы оффлайн нужно не забывать подгружать нужные участки карты в нужном разрешении (неудобно!)
  • навигация только онлайн

Вывод: почти не пользуюсь.

Курс валют

Программ для показа актуальных курсов валют полно, мне больше всего нравится XE currency. Только нужно не забыть выбрать нужные валюты и загрузить курс, пока есть интернет, а дальше она по мере появления интернета обновляет курсы сама. В бесплатное версии можно выбрать до пяти валют за раз — вполне достаточно для любого путешественника 🙂

Android, iPhone и iPad

Бронь жилья

Программ для брони жилья десятки, если не сотни, и устанавливать их все на одном телефоне просто места не хватит. А также не хватит времени их все шерстить. Поэтому я расскажу только про основные.

Смотрите также:

Booking

Booking.com — самая известная система бронирования. Мне мобильное приложение нравится тем, что в ней лучше, чем на их сайте, сделаны фильтры. Особенно привлекает фильтр по цене. На сайте нижняя категория до 50 долларов, что для многих стран считай что без фильтра. А в программе можно отсеять до любой величины, а потом еще и увидеть отели на карте с циферками рейтинга (например, №1 — самый дешевый, №2 — второй, и т.д.). Также здесь больше всего отзывов про отели.

Android, iPhone и iPad

Hotellook

Hotellook — это более новая, и соответственно менее известная система, чем Booking. Мне нравится тем, это аггрегатор, что есть Hotellook ищет сразу по 70+ системам бронирования, включая тот же Booking и другие популярные сайты. Это сильно экономит время.

Android, iPhone и iPad

Airbnb

Airbnb — это бронь квартир, комнат, домов, и даже яхт и юрт напрямую у хозяев. Мой опыт такой, что жилье на эйрбнб обычно дешевле отелей в развитых дорогих странах, и дороже отелей в менее развитых дешевых странах. То есть в Азии мы им ни разу не пользовались, но в Европе и Латинской Америке пользуемся регулярно. Также airbnb подходит для больших компаний: например, снять целую виллу у моря на десять человек обычно приятнее и выгоднее, чем пять комнат в отеле.

Раньше мне не нравился airbnb, потому что можно было долго ждать подтверждения бронирования, а оно все не приходило, или отменялось в последний момент. Сейчас там есть такая штука как мгновенное бронирование, то есть подтверждение приходит сразу — это как-то надежнее.

Android, iPhone и iPad

Кстати, если с отелем что-то не так, не стесняйтесь звонить в службу поддержки, они помогут решить вопрос или предложат скидку, или и то и другое.

Программы для брони авиабилетов

Мне удобнее бронировать авиабилеты с компьютера, но если его нет, то помогают Skyscanner и Aviasales. Они похожи, но лучше проверять цены во всех трех, потому что иногда одна из программ показывает более дешевый вариант, чем другие.

Aviasales: Android, iPhone и iPad, WindowsPhone

Skyscanner: Android, iPhone и iPad

Когда мы летели из Сантьяго (Чили) в Панама-Сити, то нашли бизнес-класс дешевле эконома 🙂

Хранение, синхронизация и обновление информации в путешествии

Для этого у меня есть Evernote. Кто не знаком с эверноут — это такая удобнейшая штука для заметок, которые синхронизируются компьютер-смартфон-веб и доступны оффлайн, в которых можно хранить тексты, картинки, списки, которые можно форматировать, присваивать им теги и класть в папки, а потом искать с помощью встроенного поиска.

Android, iPhone и iPad

Всю информацию по ходу планирования я копирую в отдельные заметки по отдельным местам, а затем синхронизирую со смартфоном. Таким образом, во время поездки вся информация под рукой.

Также по ходу путешествия я веду записи в том же Evernote: что понравилось или не понравилось, сколько стоило, все полезности, а затем использую это для написания поста в блоге.

Можно расшаривать заметки (ссылка, емейл, фейсбук, твиттер, линкедин) или целые блокноты. Можно ставить напоминалки.

В Эверноуте у меня хранятся образцы запросов по каучсерфингу и airbnb, полезные ссылки по темам (которыми я не хочу загромождать браузер), рецепты и т.д. и т.п.

Программа суперуниверсальная 🙂

Один недостаток: в бесплатной версии в смартфон могут подгружаться не все заметки, особенно большие, или если заметок много.

Что делать: если планируете работать в офлайн с большой заметкой, созданной на компьютере, зайдите в эту заметку со смартфона, чтобы она полностью подгрузилась.

Электронные словари

Google Translate

Android, iPhone и iPad

Не все знают, что Google Translate можно использовать оффлайн, заранее скачавши нужные словари.

Плюсы:

  • множество языков
  • большой словарный запас
  • можно переводить сразу текст, а не отдельные слова

Минусы:

  • словари сохраняются в память телефона, а не на внешнюю карту памяти, так что на более дешевых телефонах с маленькой встроенной памятью для них просто не хватает места

Lingvo

Android, iPhone и iPad

Плюсы:

  • занимает мало места

Минусы:

  • мало бесплатных словарей, с русского есть только на английский, немецкий, испанский, французский, итальянский и… мужской 🙂
  • небольшой словарный запас
  • перевод только отдельных слов

Spanishdict

Android, iPhone и iPad

Плюсы:

  • отличная база слов и спряжений глаголов на испанском

Минусы:

  • перевод на испанский только с английского
  • у меня на андроиде он в какое-то время стал вылетать с ошибкой, я помучилась, и пришлось его удалить, на айфоне работал стабильно
  • перевод только отдельных слов

Идеальных бесплатных словарей нет, к сожалению, а платные я не пробовала. Кто пробовал, делитесь информацией.

Программы для халявного вайфая

Я их перепробовала множество, и ни разу не нашла ни одного действующего пароля к окружающим меня вайфаям в разных странах Европы и Азии. Так что в эти программы я не верю. Если кто-то встречал что-то проверенное лично, то напишите, пожалуйста, в комментарии.

Изучение иностранных языков

Программ для изучения иностранных языков для смартфона просто видимо-невидимо. Большинство из них или слишком базовые, или платные. Я рассмотрю две проверенные бесплатные.

Duolingo

Android, iPhone и iPad

Плюсы:

  • бесплатный, без рекламы
  • большое количество языков
  • есть хотя бы элементарная грамматика
  • тренировка произношения

Минусы:

  • с русского можно изучать только английский, немецкий, французский и испанский, с украинского только английский, самый большой выбор языков с английского на другие
  • без интернета не работает, может подгружать только небольшое количество уроков, при этом часто глючит (делает вид, что подгрузил, а потом не показывает уроки, или не учитывает сделанные в телефоне уроки)
  • много дурацких бессмысленных фраз
  • нельзя выбрать, в каком порядке учить какую лексику
  • со временем нужно повторять старые уроки, и их становится больше и больше, а потом переповторять, и так много раз, пока дуолинго не станет вызывать отвращение

Если вам нужно быстро вспомнить какой-то язык перед путешествием, или подучить новый язык, похожий на тот, который вы уже знаете, то дуолинго помогает. Но выучить им какой-то язык с нуля — это утопия. Например, мы учили по нему бразильский португальский, и это помогло. А испанский я просто не смогла довести до конца: я прошла все уровни, но старые уровни протухали быстрее, чем я успевала повторять. В итоге мне просто надоело повторять одно и тоже по десять раз (я не преувеличиваю!), и дуолинго был удален.

«6000 слов» от FunEasyLearn

Испанский: Android, iPhone и iPad. Там есть и английский, и немецкий, и итальянский и еще пара десятков языков.

Плюсы:

  • большой словарный запас на разные темы (можно выбрать только интересующие темы: например, транспорт или отель, а не садоводство или детская)
  • разнообразные виды упражнений, большая вероятность запомнить слово
  • работает без интернета
  • множество языков, возможность выбрать много «родных языков», например, учить с русского\украинского португальский

Минусы:

  • нет грамматики

Какие еще программы могут пригодиться

Feedly

Android, iPhone и iPad

Фидли — это RSS ридер, в нем я получаю обновления с любимых сайтов и блогов.

Pocket

Android, iPhone и iPad

Pocket — это чудесное приложение: оно позволяет сохранять любую интернет-страницу и позже читать ее оффлайн. Когда я натыкаюсь на длинные статьи, то сохраняю их в Pocket и читаю тогда, когда есть время и жедание что-то почитать. Pocket можно подружить с Feedly и сохранять длинные записи из RSS сразу в покет, без чтения их в Feedly.

Чем еще мне нравится Pocket: он сохраняет статьи в чистом виде: без сайдбаров, рекламы, «похожих постов» и прочей отвлекающей мишуры.

Если вы, читая статью в покете, увидели интересную ссылку, ее можно сразу добавить в покет, и она подгрузится при следующем доступе в интернет.

Один недостаток: страницы подгружаются не сами, а только при открытии Pocket, то есть нужно не забывать их подргужать.

А какие приложения используете вы?

От кнопки «Назад» до шрифта: различия в проектировании приложений для iOS и Android | by Writes

Команда онлайн-школы английского Skyeng подготовила для vc.ru перевод статьи производителя программного обеспечения SteelKiwi.

Создавая дизайн для нативных приложений, нужно учитывать различия между платформами iOS и Android. Они отличаются не только внешним видом, но и структурой.

У каждой платформы — свой особенный набор функций. Гайдлайны от Apple и Google рекомендуют по возможности использовать стандартные для платформы средства навигации: элементы управления страницами, панели вкладок, сегментированные элементы управления, представления таблиц, коллекции видов и разделённый экран.

Пользователи знают, как эти элементы управления обычно работают на каждой платформе. Если вы используете стандартные элементы управления, пользователи смогут взаимодействовать с приложением на интуитивном уровне.

Сфокусируемся на основных различиях между шаблонами дизайна взаимодействия на iOS и Android, чтобы выяснить, почему приложения выглядят по-разному и почему это правильно. Представим собственные шаблоны дизайна на примерах.

Перемещение между экранами — общее для всех мобильных приложений действие. iOS и Android следуют разным гайдлайнам для разработки шаблонов навигации. В нижней части Android-устройств есть универсальная панель навигации. Кнопка «Назад» — простой способ вернуться к предыдущему экрану или действию, и он работает почти во всех приложениях Android.

Панель навигации Android

У Apple иной подход. Глобальной навигационной панели нет, и мы не можем вернуться назад с помощью универсальной кнопки возврата. Поэтому в приложении iOS внутренние экраны должны иметь собственную навигационную панель с кнопкой «Назад» в левом верхнем углу.

Кнопка «Назад» в iOS

Apple также использует свайп вправо для перехода на предыдущий экран. Этот жест работает практически во всех приложениях.

Эту разницу важно учитывать, чтобы логика взаимодействия не противоречила другим приложениями.

Гайдлайны Material Design предусматривают несколько вариантов навигации. Один из самых известных навигационных шаблонов на Android — комбинация панели навигации (navigation drawer) и вкладок.

Панель навигации — это меню, которое появляется слева или справа при нажатии значка гамбургер-меню. Вкладки расположены прямо под заголовком экрана и позволяют удобно организовать контент — пользователь может переключаться между наборами данных и функциями приложения.

В Material Design есть другой важный компонент — нижняя навигация. Панель нижней навигации позволяет переключаться между верхними экранами одним нажатием. Material Design не рекомендует использовать нижнюю навигацию и вкладки одновременно, поскольку это может запутать пользователя.

В гайдлайнах Apple Human Interface нет стандартного навигационного элемента управления, аналогичного меню панели навигации. Вместо этого Apple рекомендует включать глобальную навигацию в панель вкладок. Панель вкладок отображается в нижней части экрана — с её помощью можно переключаться между основными разделами приложения.

Обычно панель вкладок содержит не более пяти опций. Этот компонент похож на нижнюю навигацию в Material Design, но чаще используется в приложениях iOS.

Несмотря на наличие элементов, которые выполняют схожие функции в обеих операционных системах (вкладки и сегментированный элемент управления, панель нижней навигации и панель вкладок), навигация по-прежнему остаётся одним из основных различий между iOS и Android. Существуют как объективные различия, такие как глобальная панель навигации в Android и её отсутствие в iOS, так и различия концепции этих двух систем.

Согласно гайдлайнам Apple, основные элементы навигации должны быть на переднем плане, а гамбургер-меню нужно использовать только для вторичной навигации — функций, которые важны для пользователя только в определённой ситуации. В приложениях для Android первичная навигация, наоборот, часто скрыта в гамбургер-меню.

Чтобы каждый элемент приложения выглядел одинаково на разных платформах, нужно приложить дополнительные усилия при разработке. Самые сложные сценарии использования — элементы управления по умолчанию (радиокнопки, флажки и переключатели), для которых требуется специальный вид, чтобы отображать элементы управления, характерные для iOS на Android — и наоборот.

Каждая платформа использует уникальные сценарии взаимодействия. Хороший дизайн — это дизайн, который учитывает привычки пользователей каждой операционной системы и соответствует их ожиданиям.

Один из примеров элемента, который обычно выглядит по-разному на двух платформах, — это выбор даты. Пользователи Android не знакомы со стандартным для iOS способом выбора даты при помощи «колёсика».

Использование этого стиля выбора даты в Android потребует создания собственных компонентов, которые могут увеличить сложность и продолжительность разработки и сделать внешний вид приложения чуждым платформе Android.

В руководстве Material Design есть два стиля кнопок — плоский и объёмный. Эти кнопки используются в разных ситуациях. Текст на кнопках в Material Design обычно имеет верхний регистр. Такой вид текста встречается и в нативных приложениях iOS, но чаще всего в них используется верхний регистр первой буквы каждого слова.

Слева Android, справа iOS

Есть ещё один тип кнопок — всплывающая кнопка действия на Android и CTA-кнопки (call to action) на iOS. Всплывающая кнопка действия отвечает за основное действие в приложении. Например, кнопка «Создать письмо» в почтовом приложении или кнопка «Новая публикация» в приложении социальной сети. Аналогичную роль основного действия в приложениях iOS выполняет CTA-кнопка, которая расположена в центре панели вкладок.

В Android два типа нижних экранов: модальные нижние экраны и постоянные нижние экраны. Модальные нижние экраны имеют два типа контента: модальные нижние экраны с различными действиями и список приложений, который появляется после того, как пользователь нажимает иконку «Поделиться». Мы можем найти те же типы контента на нативных экранах iOS. Но эти компоненты отличаются от экранов Android.

Гайдлайны сенсорного управления для iOS и Android тоже отличаются друг от друга. (44px @ 1x для iOS и 48dp / 48px @ 1x для Android). Material Design предлагает согласовать все элементы с квадратной базовой сеткой 8dp.

San Francisco — системный шрифт в iOS. Roboto — стандартный шрифт в Android. Noto — стандартный шрифт для всех языков в Chrome и Android, которые не поддерживаются Roboto.

Фокус и важность. Взаимодействия фокусируют внимание пользователя на том, что действительно важно в приложении, поэтому необходимо использовать их только тогда, когда это необходимо. Обе платформы не приветствуют чрезмерное использование анимации — это отвлекает и нервирует пользователя.

Согласованность и иерархия. Важно помнить о том, что взаимодействие помогает пользователям ориентироваться в приложении, показывая, как элементы связаны друг с другом. Знакомые, плавные и ненавязчивые переходы с одного экрана на другой поддерживают интерес пользователей. Движение направляет пользователя и даёт ему полезные рекомендации.

Хотя основные советы по использованию микроанимаций весьма схожи в Material Design и Human Interface, существуют чётко определённые различия. Пользователи привыкли к этим переходам на платформе и воспринимают их как естественные, поэтому важно использовать знакомые взаимодействия, которые выглядят органично на каждой платформе.

Пользователи iOS привыкли к «незаметным» анимациям, плавным переходам, быстрым изменениям в ориентации устройства и скроллинге, основанном на законах физики. Пользователи iOS могут чувствовать себя дезориентированными, когда движение не имеет смысла или нарушает законы физики.

Например, если пользователь открывает экран, опустив его вниз с верхней части экрана, он ожидает, что сможет убрать его, сдвинув вверх. Human Interface рекомендует — если вы не создаёте иммерсивный пользовательский опыт (например, игру), делайте настраиваемые переходы сопоставимыми со встроенными анимациями.

Согласно гайдлайнам Material Design, при переходах элементы разделяют на исходящие, входящие или постоянные. Категория, к которой относится элемент, влияет на то, как он преобразуется.

Навигационные переходы — это важный элемент общего взаимодействия с интерфейсом. Они помогают пользователям ориентироваться. Например, когда при касании элемент расширяется, чтобы заполнить весь экран, действие расширения показывает, что новый экран является дочерним элементом. Экран, из которого он появился, — его родительский элемент.

Экраны одного типа (например, фотографии в альбоме, разделы в профиле) двигаются синхронно, это подчёркивает связь между ними. Когда один экран появляется с одной стороны, его «брат» смещается в противоположном направлении.

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

Конечно, есть исключения: некоторые приложения iOS следуют рекомендациям Material Design (например, Gmail), а некоторые приложения для Android — гайдлайнам Human Interface (например, Instagram). Но быстрее разработать мобильное приложение с использованием нативных компонентов для обеих операционных систем.

Лучше потратить время на дизайн, чем сделать один макет приложения, сочетающий гайдлайны Human Interface и Material Design, а затем потратить много времени на разработку из-за специальных элементов.

Источник

9 лучших бесплатных автономных GPS-приложений для Android

На заре потребительского GPS у вас всегда была с собой автономная копия ваших карт. Мобильного Интернета еще не было, поэтому вам приходилось обновлять карты при подключении к компьютеру или приносить их дилеру для получения обновлений. Живой трафик? Забудь об этом!

В наши дни почти все мы используем наши смартфоны для GPS-навигации, а благодаря широкому распространению мобильного Интернета мы извлекаем наши карты из Интернета в режиме реального времени. Сейчас отличное время для технологий, но бывают случаи, когда вам понадобится автономная GPS-навигация.

Эти девять приложений предлагают бесплатные офлайн-службы GPS для телефонов Android и охватывают все, от вождения в глуши до пеших прогулок по пустыне.

Это приложение GPS, которое у вас почти наверняка уже есть на вашем телефоне Android, но это также отличное автономное GPS-решение. Вы можете предварительно загрузить свой регион или определенные регионы, чтобы навигация продолжала работать, когда ваше соединение не работает.

Хотя у вас не будет доступа ко всем замечательным облачным функциям, таким как информация о дорожном движении в реальном времени, вы все равно получите то же приложение «Карты».Благодаря поддержке ходьбы, езды на велосипеде и вождению, а также ведущему в отрасли интерфейсу, это должно стать первой остановкой для большинства людей.

Возможно, вы никогда не слышали о OsmAnd с неуклюжим названием, но это приложение предлагает большую ценность за королевскую сумму бесплатного пользования. Бесплатная версия приложения позволяет загружать до семи карт. Если больше, то вам придется заплатить за подписку.

Однако большинству людей не потребуется ничего, кроме карт для их страны или региона, так что это не является серьезным ограничением.

Голосовая и визуальная навигация включена, а также есть специальные режимы для езды на велосипеде, ходьбы, пешего туризма и общественного транспорта. Само программное обеспечение с открытым исходным кодом, поэтому, если вы решите перейти на платную версию или оформить подписку, оно будет направлено на проект открытой картографии.

Sygic — одно из самых популярных приложений GPS для Android. Фактически, этот автор использует его как резервную копию, когда Google Maps не может получить рабочее соединение. Карты можно загрузить для автономного использования с пошаговой навигацией.

На Sygic есть платная опция, но функции, которые являются эксклюзивными для платной версии, не являются критичными для большинства людей. Они включают в себя режим HUD, запись видеорегистратора, информацию о движении в реальном времени и настройку маршрута. Только последнее может показаться соблазнительным для большинства людей, но премиум-функции действительно нацелены на людей, которые зарабатывают на жизнь водителями, таких как водители-курьеры и дальнобойщики.

Хотя Sygic кажется немного устаревшим по сравнению с Google Maps, вы найдете здесь надежный и надежный продукт для навигации, который идеально подходит в качестве запасного варианта на случай отключения Интернета.

Maps.Me не только предлагает офлайн-сервисы карт GPS для Android в качестве бонуса, но и специализируется на офлайн-картах и ​​навигации. Имея возможность загружать карты мира по мере необходимости, вы можете перемещаться во время вождения, езды на велосипеде или пешком. Все это бесплатно, но с рекламой придется мириться.

Maps.Me также был дополнен контентом из Википедии, чтобы предоставить вам мгновенную контекстную информацию о местах, и он имеет встроенные предлагаемые маршруты.Он даже выглядит довольно прилично, учитывая, что вам не нужно ничего платить, чтобы им пользоваться.

Это приложение практически повсеместно рекомендовано пользователями, и оно обязательно должно быть во всем списке приложений, которые стоит попробовать, прежде чем остановиться на своем любимом.

Это приложение от Here Apps специально разработано для навигации по городу. Так вы найдете более подробную информацию, например, об общественном транспорте. Вы также можете заказать такси прямо из приложения или легко получить подробную информацию о достопримечательностях.

Планирование маршрута также является одним из лучших для городских путешествий, которые мы когда-либо видели. Приложение покажет вам лучшие маршруты для разных видов транспорта, в том числе лучшие велосипедные маршруты. Здесь также есть отличные пешеходные инструкции, которые также покажут вам, когда и где пересесть на общественный транспорт.

Конечно, основная причина, по которой он в этом списке, — добавление офлайн-карт. В списке загружаемых карт приложения чуть более 100 стран. В нем также есть информация об общественном транспорте более чем 1300 городов, поэтому он действительно необходим горожанам, независимо от того, каким видом транспорта вы пользуетесь.

Есть две версии этого GPS-приложения: бесплатная версия с рекламой и платная версия без рекламы и с некоторыми дополнительными функциями. Однако для большинства людей бесплатной версии Polaris будет более чем достаточно.

В отличие от большинства приложений в этом списке, Polaris не заменяет себе подобных Google Maps. Вместо этого это специализированный инструмент для любителей активного отдыха. Поэтому, если вам нравится ходить в походы в отдаленные места, но вам не нравится идея стать статистиком о пропавших без вести, Polaris GPS — отличный выбор.

Есть специальные возможности и карты для походов, охоты, парусного спорта и рыбалки. Polaris также предлагает инструмент компаса и множество данных датчиков, которые помогут вам выжить вдали от цивилизации. Если это похоже на вас, скачайте это приложение сегодня.

Пошаговая навигация — это платная опция премиум-класса с Genius Maps, но бесплатная версия программного обеспечения позволяет загружать карты на устройство и использовать их для планирования маршрута.

Сами карты получили высокую оценку за их детализацию и инновационный расчет маршрута, но если вы не хотите платить за профессиональный навигационный компонент службы, вам все равно придется использовать другое приложение, если вы хотите получать информацию о дорожной обстановке и поворот пошаговое руководство.

Тем не менее, стоит сравнить карты, которые Mireo собрал для Genius Maps, с теми, которые вы используете в настоящее время. Вы можете обнаружить маршруты и информацию, которые иначе никогда бы не увидели.

В магазине Google Play вы найдете три разные версии Handy GPS. Бесплатная версия, версия по подписке, а затем премиум-версия с предварительной ценой.

Бесплатная версия не включает офлайн-карты, но предлагает базовые офлайн-сервисы GPS для Android без подключения к Интернету.В частности, он покажет вам живые данные о вашем местоположении, высоте, скорости, направлении движения и т. Д. Вы можете сохранять свое местоположение, записывать журналы своего движения и выполнять другие технические упражнения, например, показывать вам положение спутников GPS.

Handy GPS действительно очень удобен, но не для всех. Если вы ищете чистое приложение GPS, а не инструмент для управляемой навигации, это вполне может сработать. Это может понравиться геодезистам, исследователям и всем, кому нужен доступ к необработанным данным GPS.

Последнее приложение в нашем списке безумно популярно, его установили более тридцати миллионов раз. Он использует тот же ресурс Open Street Maps, что и многие другие бесплатные офлайн-приложения GPS, но предлагает полный пакет, более соответствующий платным приложениям.

Фактически, единственное, что вы упустите, используя бесплатный набор функций, — это альтернативные маршруты, режим HUD и цветовые темы. Вам также придется мириться с рекламой, но это почти нормальное явление в мире бесплатных карт.

Список включенных функций впечатляет, так что деньги на рекламу куда-то идут. Есть 3D-режим, достопримечательности, модели маршрутов для различных типов транспортных средств, возможность заблокировать определенные дороги для вашей навигации и многое другое.

Совершенно очевидно, почему у этого так много установок. Имея почти миллион отзывов и средний рейтинг 4,6 звезды, очевидно, что люди из MapFactor делают что-то очень правильное.

Лучшие офлайн-приложения с GPS-картами для загрузки перед поездкой

Если все эти поездки за город научили исследователей чему-то, так это тому, что нельзя принимать GPS-навигацию как должное.Конечно, Google Maps работает как шарм, когда у вас есть надежное соединение для передачи данных, но беспроблемное соединение никогда не является подарком, когда вы мчитесь по дороге с меньшим количеством путешествий. И даже не обращайте внимания на то, что исследователи нормирования данных вынуждены делать во время поездок за границу. К счастью, существует множество картографических и навигационных приложений, которые хорошо работают даже без подключения к Интернету. Итак, вот наша подборка лучших офлайн-приложений GPS для вашего телефона Android или iOS:

Google Карты офлайн

Начнем с навигационного приложения, которое предустановлено на всех телефонах Android.Возможно, наиболее часто используемая функция Google Maps — это функция автономных карт. Вы можете загрузить интересующую вас область, используя надежное соединение Wi-Fi, и сохранить ее либо на свое устройство, либо на SD-карту в соответствии с вашими предпочтениями. Конечно, вы не будете получать никаких обновлений трафика при использовании офлайн-версии, но вы по-прежнему получите доступ к полезной информации, такой как варианты и расписание общественного транспорта — очень полезно во время поездок за границу, если вы спросите нас. Планируя загрузку, помните, что срок действия кэшированной карты истекает через 30 дней.

Предложено: Google публикует данные о местоположении пользователей, чтобы показать влияние блокировки COVID-19

Sygic GPS-навигация и автономные карты

Получая данные от TomTom и других картографических провайдеров, Sygic — это чрезвычайно популярное навигационное приложение, которое предлагает пользователям в автономном режиме просмотр трехмерных карт. Те, кто использовал Sygic, доверяют его интуитивно понятному интерфейсу и расширенным функциям безопасности. Его автономные карты содержат очень полезную информацию, такую ​​как предстоящие изменения ограничения скорости и Dynamic Lane Assistant, который направит вас на правильную полосу движения — опять же, очень удобно для тех, кто едет в чужом городе.Вы также получаете голосовую GPS-навигацию с точными указаниями и названиями улиц в автономной версии. Для пешеходов Sygic предлагает пешеходные маршруты и подборку тысяч туристических достопримечательностей.

ЗДЕСЬ WeGo Offline Maps & GPS

Один из крупнейших конкурентов Google Maps, HERE WeGo — популярное автономное навигационное приложение среди международных путешественников с ограниченными тарифными планами. Вы можете загружать офлайн-карты более чем 100 стран мира и пользоваться голосовыми подсказками / прогулками без единого сигнала сотовой связи.Красивый интерфейс и надежная GPS-навигация сделали HERE WeGo приложением «Выбор редакции» в Android Play Store. А с информацией об общественном транспорте для 1300 городов, доступной в приложении, вы можете узнать все, от расписания и цен на билеты на автобус / метро до тарифов на такси и точек доступа. Для байкеров приложение предлагает удобный путеводитель по местности, объясняющий, насколько ровной или холмистой будет поездка на велосипеде.

OsmAnd Offline Travel Maps & Navigation

Продукт сотрудничества двух платформ с открытым исходным кодом — OpenStreetMap и Wikipedia — OsmAnd позволяет бесплатно загружать семь файлов карт для автономной навигации.В зависимости от вашего использования и объема памяти устройства вы можете выбирать между полными картографическими данными и только данными дорожной сети. Например, для полной карты Японии требуется 700 МБ, а для дорожной сети — всего 200 МБ. Оффлайн-карты OsmAnd подходят для активного отдыха и имеют все возможности для пеших, пеших и велосипедных прогулок. А поскольку это проект с открытым исходным кодом, вы также можете внести свой вклад, сообщая об ошибках или добавляя интересные места и загружая их, как только вы снова окажетесь в сети.

Карты.мне

Другое навигационное приложение, созданное на основе данных OpenStreetMap, Maps.me поставляется без каких-либо покупок в приложении или ограничений на загрузку на тщательно оптимизированных автономных картах. Но хотя все карты и функции внутри приложения бесплатны, вы можете увидеть всплывающие окна с рекламой — но ничего слишком навязчивого. Для автономной навигации Maps.me поддерживает режимы вождения, ходьбы, общественного транспорта и езды на велосипеде. Вы также можете прокладывать маршруты к достопримечательностям (POI) вокруг вас, пешеходным тропам и удивительным местам, отсутствующим на других коммерческих картах.

Вы использовали автономные карты для навигации? У вас есть фаворит, которого нет в нашем списке? Напишите нам в комментариях!

Теперь читайте: Что такое отслеживание контактов и почему Apple и Google хотят этим заниматься?

8 лучших бесплатных автономных приложений для GPS-навигации для Android

Мы уже знаем, что существует множество отличных приложений для навигации, когда у вас есть подключение для передачи данных. Но что, если вам нужно ваше местоположение по GPS, когда вы не в сети? У вас есть для этого приложение GPS?

Автономный GPS — важная функция для любого приложения для карт.Вы будете использовать его, если вы путешествуете по чужому городу и у вас отключен роуминг, или если вы заезжаете в мертвую зону во время поездки.

Вот лучшие бесплатные офлайн-приложения GPS для Android.(Помните, что вы также можете использовать свой телефон Android в качестве устройства GPS-трекера с его встроенной функцией Find My Device .)

1.Карты Google

галерея изображения (2 изображения)

Закрывать

Изображение 1 из 2

Изображение 2 из 2

Google Maps предлагает способ загрузки и сохранения региональных карт для использования в автономном режиме — вам просто нужно немного подготовиться, прежде чем уйти из дома.

Чтобы загрузить карту, нажмите на меню More (три горизонтальные линии) в верхнем левом углу, затем выберите Offline Maps .Google порекомендует вам несколько карт для загрузки в зависимости от вашего дома и часто посещаемых вами мест. Вы также можете нажать Выберите свою карту , чтобы загрузить другую область.

Максимальный размер карты, которую вы можете загрузить, составляет 2 ГБ, что составляет примерно 200 x 120 миль.Приложение автоматически удаляет все загруженные карты через 30 дней без подключения к Интернету.

Чтобы получить дополнительные советы, ознакомьтесь с основными советами Google Maps для планирования поездки.

Загрузить: Google Maps (бесплатно)

2.Sygic GPS-навигация и автономные карты

Sygic — это наиболее часто устанавливаемое автономное GPS-приложение в магазине Google Play.Компания имеет соглашение с TomTom, позволяющее предоставлять офлайн-карты для каждой страны мира.

Другие заслуживающие внимания функции включают бесплатное обновление карт, GPS-навигацию с голосовыми подсказками и GPS-навигацию для пешеходов, когда вы идете пешком.

Приложение даже может помочь вам сэкономить деньги.Если у вас есть подключение к Интернету, он автоматически предупредит вас о ближайших ближайших дешевых парковках и заправочных станциях, а также предоставит информацию о приближающихся камерах контроля скорости.

Sygic предлагает как бесплатную, так и платную версию.Вы можете попробовать платную версию в течение семи дней при первой загрузке приложения.

Загрузить: Sygic GPS-навигация и автономные карты (бесплатно, доступна подписка)

3.OsmAnd

OsmAnd — еще одно популярное картографическое приложение, работающее в автономном режиме.Также есть онлайн-режим для тех случаев, когда у вас есть надежное соединение для передачи данных.

Часть приложения GPS имеет ряд ключевых функций.Они включают в себя голосовые подсказки, подсказки по полосам, расчетное время прибытия в реальном времени, дневной / ночной режим экрана, маршруты движения на лету на случай неправильного поворота и специальные велосипедные маршруты.

В некоторых странах офлайн-карта даже может похвастаться такими функциями, как время работы и доступные способы оплаты магазинов.Наконец, это приложение должно быть у лыжников. Есть платный плагин, который показывает карты маршрутов многих самых популярных курортов мира.

Скачать: OsmAnd (доступна бесплатная, премиум-версия)

4.MAPS.ME

КАРТЫ.ME — это полноценное бесплатное приложение для GPS. Если вам нужна автономная навигация, ее определенно стоит проверить.

В автономном режиме вы можете пользоваться полнофункциональной функцией поиска, голосовой навигацией, расчетом изменения маршрута и общественным транспортом.Вы также увидите рестораны, банкоматы и достопримечательности. Если вы в сети, вы можете делиться своим местоположением с друзьями, добавлять закладки и даже бронировать номера в отелях, не выходя из приложения. Это делает его отличным Android-приложением для путешествий.

Карты обновляются OpenStreetMap и имеют полностью открытый исходный код.

Разработчики приложения также пообещали.Все карты и функции будут бесплатными навсегда; нет планов по введению структуры ценообразования. MAPS.ME поддерживается рекламой, и вы можете заплатить за их удаление.

Загрузить: MAPS.Я (бесплатно)

5.MapFactor GPS-навигация Карты

MapFactor — еще одно отличное бесплатное приложение GPS для Android.

Когда вы запускаете приложение в первый раз, оно предлагает вам загрузить карты для использования в автономном режиме.Это потому, что здесь нет функции онлайн-карты. Вместо этого приложение предлагает на выбор более 200 автономных индивидуальных карт, в том числе 56 для Европы и 53 для Америки.

Карты сгруппированы по странам, но для густонаселенных районов доступны субрегионы.Вы также можете найти карты для камер контроля скорости в определенных областях. Каждая карта берет свои данные из OpenStreetMap.

Загрузить: MapFactor (доступна бесплатная, премиум-версия)

6.ЗДЕСЬ WeGo

галерея изображения (2 изображения)

Закрывать

Изображение 1 из 2

Изображение 2 из 2

ЗДЕСЬ WeGo — еще одно приложение, специализирующееся на автономной GPS-навигации.Он предлагает офлайн-карты для более чем 100 стран.

Автономные карты включают направления, цены на билеты на общественный транспорт, цены на совместное использование автомобилей, а также расписание поездов и автобусов.

Когда вы вводите свой маршрут, приложение сравнивает автомобильные, велосипедные, пешеходные, такси и маршруты общественного транспорта, чтобы найти самый быстрый и экономичный способ совершить путешествие.Он даже сообщит вам, идет ли ваша поездка преимущественно в гору или под гору.

Вы можете получить доступ к информации об общественном транспорте более чем 1300 городов по всему миру, включая большую часть Северной Америки и Европы.

Как КАРТЫ.МЕНЯ, приложение HERE WeGo поддерживается рекламой.

Загрузить: ЗДЕСЬ WeGo (бесплатно)

7.CoPilot GPS

Автомобильная навигация — это основная цель CoPilot GPS.Людям, идущим пешком, следует избегать этого.

Приложение отлично подходит для планирования маршрутов.Для каждого путешествия предлагается три отдельных варианта. И для каждого из трех маршрутов вы можете добавить до 52 отдельных путевых точек.

CoPilot также имеет тысячи офлайн-местоположений, таких как отели, рестораны, банкоматы и достопримечательности.Вы можете использовать функцию поиска, чтобы найти их, даже если вы находитесь в автономном режиме.

Вы можете воспользоваться бесплатной семидневной пробной версией премиум-функций.К ним относятся 3D-карты и помощник по аудионавигации. По истечении пробного периода приложение ограничивает вас использованием двухмерных автономных карт и визуальных пошаговых указаний.

Загрузить: CoPilot GPS (бесплатно, доступна подписка)

8.Карты Genius

галерея изображения (2 изображения)

Закрывать

Изображение 1 из 2

Изображение 2 из 2

Бесплатная версия Genius Maps позволяет загружать офлайн-карты и предоставляет информацию о местных достопримечательностях.

Если вам нужны голосовые подсказки, автоматическое изменение маршрута, предупреждения об ограничении скорости и отчеты о дорожном движении в реальном времени, вам нужно будет перейти на профессиональную версию.Вы можете сделать это из приложения.

Genius Maps предлагает офлайн-карты для большинства стран мира.Европа и Северная Америка имеют 100-процентное покрытие.

Загрузить: Genius Maps (бесплатно)

GPS отличный, но следите за своей батареей!

Мы надеемся, что эти приложения GPS помогут вам добраться туда, куда вы собираетесь, даже без данных.Но мы оставим вам небольшое предупреждение: постоянная работа приложений GPS в фоновом режиме быстро разряжает вашу батарею.

Если вы идете пешком, постарайтесь как можно больше выключить GPS.Если вы едете за рулем, вам следует подумать о приобретении автомобильного зарядного устройства, которое является важным аксессуаром для смартфона, который стоит держать в машине. Мы также рассмотрели, как сэкономить заряд аккумулятора на Android, если вы хотите узнать больше.

Если вам нужна дополнительная помощь в занятиях на свежем воздухе, ознакомьтесь с этими автономными приложениями для Android, которые помогут пережить приключения на природе.

Ваш телефон тайно всегда записывает: как запретить Google слушать

Гугл всегда слушает ваш телефон? Вот факты и как заставить Google вас не слушать.

Читать далее

Об авторе

Дэн Прайс
(Опубликовано 1520 статей)

Дэн присоединился к MakeUseOf в 2014 году и является директором по партнерству с июля 2020 года.Обращайтесь к нему с вопросами о спонсируемом контенте, партнерских соглашениях, рекламных акциях и любых других формах партнерства. Вы также можете найти его каждый год бродящим по выставочной площадке CES в Лас-Вегасе, поздоровайтесь, если собираетесь. До своей писательской карьеры он был финансовым консультантом.

Более
От Дэна Прайса

Подпишитесь на нашу рассылку новостей

Подпишитесь на нашу рассылку, чтобы получать технические советы, обзоры, бесплатные электронные книги и эксклюзивные предложения!

Еще один шаг…!

Подтвердите свой адрес электронной почты в только что отправленном вам электронном письме.

5 лучших приложений для морской навигации

Если у вас есть лодка (или вы думаете о покупке лодки) и у вас есть мобильный телефон, вам, вероятно, интересно узнать все о лучших морских приложениях. И среди множества типов лодочных приложений приложения для морской навигации являются одними из самых полезных. С помощью лучших приложений для морской навигации вы можете буквально превратить свой телефон или планшет в полноценный картплоттер.Это означает, что у вас есть ценная резервная копия электроники у руля, и вы можете носить свои технологии с собой даже на борту небольших лодок без электрических систем.

На протяжении многих лет мы тестировали ряд приложений для морской навигации, и это наши фавориты (в алфавитном порядке):

  1. Посадка C-Map
  2. iNavX
  3. НоуВэйк
  4. Navionics
  5. SeaPilot

C-Map Посадка

C-Map создает цифровые диаграммы в течение многих лет, и в прошлом у нее были другие навигационные приложения, но Embark недавно заменил предыдущие предложения.Идея разработки этого навигационного приложения следующего поколения заключалась в том, чтобы сделать его максимально простым и легким в использовании. Это цель, которую достигла C-Map, и хотя дизайн делает ее одним из самых упрощенных приложений в нашем обзоре, это одна из причин, почему мы ее любим — вам всем понадобится 30 секунд, чтобы понять, как для выполнения важных навигационных задач, таких как переход от пункта A к пункту B. Изящная бонусная функция: приложение может «видеть» ситуацию освещения, в которой вы находитесь, и автоматически настраивать цвет и контраст для наилучшего просмотра.

Цена: Бесплатная базовая версия с покупками внутри приложения по разной цене за доступ к карте и данные о погоде.

Щелкните здесь, чтобы загрузить.

iNavX

iNavX предоставляет вам удивительную свободу выбора графиков, по которым вы выбираете навигацию, и имеет восемь различных поставщиков в их магазине карт в приложении (карты NOAA предоставляются бесплатно). Это приложение также позволяет вам выполнять гораздо больше, чем простые навигационные задачи, с довольно продвинутыми функциями, такими как наложение файлов GRIB (форма текущих данных о погоде) на экран вашего картплоттера или подключение к приборам, совместимым с NMEA (Национальная ассоциация морской электроники) на вашем судне. через Wi-Fi для отображения таких вещей, как данные двигателя и AIS (автоматическая информационная система, которая использует транспондеры на коммерческих судах и лодках для передачи информации, касающейся таких вещей, как идентификация, скорость, курс и пункт назначения).Изучение основ навигации не слишком сложно из-за дополнительных функций, но использование расширенных функций потребует некоторого изучения.

Цена: $ 4,99 для Apple плюс покупки в приложении; бесплатно для базовой версии Android, 19,99 долларов США в год для расширенной версии Pro.

Щелкните здесь, чтобы загрузить.

KnowWake

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

Погрузившись в приложение, вы сразу увидите сходство между приложениями GPS, которые вы можете использовать в автомобиле, например, Google Maps или краудсорсинговым приложением, таким как Waze.

KnowWake является домом для сообщества лодочников в режиме реального времени в Северной Америке, Канаде, некоторых частях Карибского бассейна, Австралии и Новой Зеландии, охватывающих прибрежные водные пути и более 350 внутренних озер и рек. KnowWake предоставляет своим пользователям простой способ исследовать все доки и прибрежные локации, доступные на лодке.Вы найдете все, от местных ресторанов, пристаней для яхт, топливных доков, лодочных аппарелей, магазинов для дайвинга, бухт, мест для дайвинга, мест для сноркелинга и многого другого.

Вы также найдете полезные инструменты, такие как «Маршрутизация к пункту назначения на основе осадки судна», «Совместное использование местоположения между пользователями», «Локальный и удаленный глубиномер», «Треки судов», «Контрольные списки перед отправлением» и простая форма для отправки плавающего плана.

Цена: Ага, вам повезло — этот бесплатный.

Щелкните здесь, чтобы загрузить.

Navionics

Navionics претендует на звание самого популярного из доступных приложений для катания на лодках, а его навигационные функции и возможности, мягко говоря, всеобъемлющи.Фактически, он предлагает множество функций, которые не могут сравниться с некоторыми современными картплоттерами. Например, автоматическая маршрутизация от дока к доку создает маршрут от точки A до точки B с учетом таких вещей, как навигационные средства и ограничения осадки вашей лодки, когда вы просто нажимаете начальную и конечную точки. Функция Sonarchart Live позволяет создавать батиметрические карты местности, в которой вы плывете, в режиме реального времени. Изменения сообщества, созданные пользователями, могут отображаться с ежедневными обновлениями. И это лишь некоторые из основных моментов в длинном списке уникальных функций.

Цена: Двухнедельная пробная версия предоставляется бесплатно, затем подписка зависит от региона (регионов) диаграммы (от 14,99 до 54,99 долларов).

Щелкните здесь, чтобы загрузить.

SeaPilot

Seapilot — это довольно комплексное навигационное приложение (хотя некоторые из более продвинутых функций, таких как маршрутизация и прогноз погоды, требуют обновления до премиум-версии), которое вводит другой поворот в микс: интеграцию с Facebook. Подключенные друзья отображаются в приложении как цели AIS, поэтому находить друг друга и связываться на воде проще.Seapilot также необычен тем, что он может предложить полярные диаграммы (которые показывают теоретически достижимую скорость в зависимости от направления и скорости ветра) для более чем 300 лодок, чтобы определить идеальный путь для управления парусной лодкой с учетом прогнозов ветра и течения.

Цена: Бесплатная базовая трехдневная пробная версия, от 7,99 до 64,99 долларов в зависимости от подписки на область диаграмм.

Щелкните здесь, чтобы загрузить.

Ищете другие приложения для лодок, чтобы попробовать?

Эй, рыболовы, подождите секунду — пока не кладите этот телефон обратно в карман, потому что, когда вы выходите на рыбалку, он подходит не только для навигации.Также обязательно ознакомьтесь с лучшими приложениями для рыбалки, чтобы в следующий раз, когда вы попадете в воду, вы поймаете больше рыбы.

Читать дальше: Как управлять лодкой


Вам также может понравиться:

Лучшие навигационные приложения для Android и iOS

Приложения для GPS-навигации позволяют нам легко добраться до нужного места с помощью точных пошаговых инструкций. А как насчет трафика? Закрытые дороги? Могут ли приложения для навигации помочь вам избежать этих неприятностей и без головной боли доставить вас туда, куда вы собираетесь?

К счастью, да.Если вы ищете лучшее приложение для навигации, обратите внимание на эти семь различных вариантов для Android и iOS.

Это не мог бы быть список лучших навигационных приложений, если бы мы не включили Google Maps. Google сфотографировал и нанес на карту большую часть земного шара и постоянно обновляет свои базы данных, добавляя новые дороги, объездные дороги и даже обновляя изображения в Google Street View. Он включает в себя простой в настройке режим навигации, позволяющий делать несколько остановок и пит-стопов по пути, он показывает трафик в реальном времени во время путешествия и помогает избежать этих проблемных горячих точек, и у него даже есть автономный режим, чтобы вы могли сэкономить карты, которые вам понадобятся позже, без использования ваших ценных данных.Речь идет не только о навигации — как только вы доберетесь до места, оно также может порекомендовать места, где можно поесть, выпить или остановиться, в зависимости от ваших потребностей. Google Карты доступны для iOS и включены по умолчанию на большинстве телефонов Android. Как и следовало ожидать, он также работает с Android Auto.

Android iOS

Apple Maps — это ваш вариант по умолчанию, когда вы используете устройство iOS, но, как и Google Maps, это не значит, что это некачественный интерфейс. Apple Maps предлагает все основные функции навигации, которые вы ожидаете, но расширяет сферу их действия, предлагая предложения путешествий на основе ваших предыдущих действий или событий в вашем календаре.Он отображает все ближайшие бары или рестораны на основе вашего поиска или простой команды «поблизости». Когда вы действительно в движении, он проверяет, в какой полосе движения вы должны ехать, и предлагает вам остановиться, если вы едете в общественном транспорте. Вы даже можете записаться на прием из приложения в таких сервисах, как OpenTable, Lyft или Uber. Apple Maps — еще один отличный универсальный вариант, но он доступен только для iOS.

iOS

На самом деле это не полноценное навигационное приложение, но если вы хотите путешествовать по городу, то нет лучшего варианта, чем Citymapper.Доступный в большом количестве городов по всему миру, Citymapper предоставляет вам подробную информацию о том, как передвигаться, включая расписание автобусов и поездов, пешеходные маршруты и данные в реальном времени, чтобы вы всегда были в курсе сбоев или пробок. может задержать вас. Если вы регулярно путешествуете по городу, помимо актуальной информации о поездках вы также получаете обновленную информацию о прогнозируемой загруженности дорог в обычное время в пути, а также о любых альтернативных маршрутах, которые могут помочь вам быстрее добраться. Это не очень хорошо, когда ты в тупике, но нет лучшего приложения как для городского пижона, так и для городского гостя.

Android iOS

Waze — это не просто приложение для навигации — это набор драйверов, работающих вместе, чтобы как можно меньше людей попадало в ловушку пробок и неверных данных на карте. Waze постоянно обновляется миллионами и миллионами пользователей, которые используют его для перемещения из одного места в другое, передавая данные о времени в пути, трафике и даже ценах на топливо обратно в Waze, чтобы помочь другим пользователям. Вы можете добавлять друзей в свое приложение и видеть их на своей карте, чтобы вы точно знали, когда они собираются связаться с вами, а сообщество постоянно следит за тем, чтобы карты, используемые для навигации, были актуальными.Он также работает с Android Auto в вашем автомобиле, и его определенно стоит попробовать, если вы каждый день ездите на работу. Несмотря на то, что оба принадлежат Google, может быть сложно выбрать между Waze и Google Maps, поэтому мы рекомендуем попробовать оба, чтобы найти подходящий для вас.

Android iOS

Да, MapQuest все еще существует, и, по данным Apple, он входит в десятку лучших навигационных приложений. Как и Waze, MapQuest пытается конкурировать с Apple Maps и Google Maps, чтобы обеспечить лучшую пошаговую GPS-навигацию.Он добавляет такие слои, как еда, бензин, отели и покупки, чтобы дать вам представление о том, что находится поблизости. Когда вы щелкаете место — например, ресторан — вы можете получить доступ к более подробной информации, включая обзоры Yelp и быстрый доступ к его веб-сайту. При прокладывании маршрута MapQuest покажет вам маршрут движения и пешеходный маршрут, а также оснащен обновленными камерами в реальном времени, чтобы вы могли просматривать условия, прежде чем отправиться в путь. Подобно Waze, это отличное альтернативное приложение для навигации, когда вы хотите попробовать что-то новое.

Android iOS

Komoot — это не навигационное приложение для водителей — оно создано специально для всех, кто ищет приключений на природе.Катаетесь ли вы на велосипеде по дороге, путешествуете пешком, путешествуете пешком или на горном велосипеде, Komoot поможет вам спланировать и ориентироваться на свежем воздухе. Вы можете создать свой собственный опыт на открытом воздухе с помощью инструмента планирования, и когда вы будете готовы к работе, пошаговая навигация и автономные карты будут держать ваше приключение в нужном русле. Komoot генерирует топографические маршруты для конкретных видов спорта, предоставляя вам свободу выбора, как вы хотите перемещаться. Кроме того, когда вы закончите, вы можете сохранить свое путешествие и поделиться своими впечатлениями с друзьями.

Android iOS

Теперь это настоящий универсальный вариант. DriveMode — это не совсем приложение для навигации, это скорее удобный интерфейс, который размещается поверх вашего телефона во время вождения. Но какой интерфейс! DriveMode позиционирует себя как приложение для обеспечения безопасности и использует большие экранные кнопки и голосовые команды, чтобы вы могли получить доступ к нужной информации в нужный момент. Вы можете отвечать на текстовые сообщения своим голосом, а также пропускать песни в музыкальном проигрывателе или быстро находить новые маршруты.Он совместим со многими лучшими музыкальными приложениями и картами, включая Spotify, Google Maps и др., И даже синхронизируется с Google Assistant. Если ваша машина не умен, DriveMode может заставить ее казаться такой, какой она есть. К сожалению для пользователей iPhone, пока это только Android.

Android

Рекомендации редакции

лучших приложений для морской навигации на 2020 год

Навигация с помощью планшета или телефона никогда не была такой простой.Мы перечисляем пять наших любимых приложений для мобильных картплоттеров для использования на планшетах или смартфонах iOS или Android. Все перечисленные портативные навигационные приложения являются бесплатными или недорогими, но если вам нужны дополнительные функции или подробные диаграммы, многие из них потребуют покупок в приложении. Интерфейс каждого приложения несколько отличается, поэтому попробуйте несколько самостоятельно и посмотрите, какое из них лучше всего подходит вам и вашим потребностям в катании на лодке.

Большинство мобильных приложений для морской навигации используют растровые карты NOAA, то есть бумажные карты, которые были отсканированы и загружены в приложение.Векторные диаграммы — это электронные диаграммы, которые предлагают плавную прокрутку между различными областями, а также позволяют пользователю увеличивать масштаб для получения дополнительных деталей.

Если у вас есть выбор, планшет предпочтительнее смартфона просто потому, что видимая область диаграммы намного больше.

iNavX

Это очень популярное приложение для портативных картплоттеров работает на устройствах iOS и Android. За загрузку приложения взимается небольшая плата, но затем вы можете бесплатно скачать растровые диаграммы NOAA. iNavX также работает с векторными картами, включая Navionics, Waterway Guides, NV Charts и т. д., но за это взимается дополнительная плата.

За дополнительную плату вы можете загрузить и наложить метеоданные из файлов Theyr и GRIB, что является удобной функцией.

$ Члены BoatUS получают 10% скидку на карты. Получите доступ к экономии, войдя в свою учетную запись на BoatUS.com.

Стоимость: 4,99 доллара США за загрузку, плюс стоимость карт и данных о погоде (через покупки в приложении)

Плюсы: Превосходное навигационное приложение; работает как с растровыми, так и с векторными диаграммами; доступны наложения данных о погоде; Скидка 10% на карты для членов BoatUS

Минусы: Требуется некоторое привыкание; кому-то это может показаться слишком сложным

iSail GPS

Это самое дешевое приложение из рассмотренных, и в нем нет подписок, всплывающих окон или покупок в приложении, которые мешали бы работе.Это не самое полное приложение для навигации, но это надежный, простой в использовании инструмент навигации без излишеств. С легкостью измеряйте расстояние между двумя интересными точками, а также импортируйте и экспортируйте путевые точки, маршруты и треки. Это приложение использует растровые диаграммы NOAA, и, как и многие другие приложения, диаграммы хранятся на самом устройстве, а не в Интернете, поэтому приложение полностью функционально, даже когда нет Wi-Fi или сотового сигнала. Одним из удобных инструментов является список путевых точек, который показывает расчетное время прибытия к каждой промежуточной путевой точке, а не только к конечному пункту назначения.

Стоимость: $ 7,99

Плюсы: Дешево и сердито; показывает ETA до промежуточных точек

Минусы: Дешево и сердито; только iOS

MX Маринер

Это приложение только для Android предлагает автономные растровые диаграммы в дополнение к доступу к интерактивному руководству Active Captain. В дополнение к функциональности в приложении также есть дорожные карты, но они доступны только тогда, когда устройство подключено к сотовой сети или Wi-Fi. Как и в других приложениях, вы можете создавать, редактировать, вводить и просматривать путевые точки, а также использовать инструмент измерения для быстрого измерения между двумя точками на карте.Расстояния могут отображаться в морских или статутных милях или километрах в соответствии с предпочтениями оператора.

Стоимость: $ 9,99

Плюсы: Простота использования без излишеств; дорожные карты полезны для водителей трейлеров

Минусы: Только Android; дорожные карты требуют доступа к сети

Navionics

Наверное, самое популярное навигационное приложение, Navionics использует векторные карты и позволяет пользователю подключаться к некоторым картплоттерам через Wi-Fi для передачи маршрутов и путевых точек.После загрузки диаграммы сохраняются на устройстве для использования в автономном режиме. Перекрестие позволяет легко размещать путевые точки и получать доступ к местной информации о погоде и приливах. Navionics предлагает бесплатную двухнедельную пробную версию, после которой диаграммы необходимо приобрести, чтобы продолжить использование приложения.

Покупки в приложении открывают дополнительные функции, такие как автоматическая маршрутизация и сонарные карты.

Top Navigation App запускается на Android Auto в качестве полноценной альтернативы Google Maps

Google Maps и Waze в настоящее время являются двумя лучшими вариантами, когда дело доходит до навигационных приложений на Android Auto, но это также связано с тем, что платформа до сих пор блокировала сторонние ПО от обкатки в авто.

Другими словами, эти два были единственными навигационными приложениями, которые Google разрешил в Android Auto, в то время как сторонние решения были ограничены телефонным интерфейсом.

Все изменилось в начале этого года, когда Google решил разблокировать Android Auto и разрешить использование сторонних навигационных приложений в автомобиле.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *